您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
elasticSearch的Profile API 性能分析
发布时间:2021-08-25 22:50:00编辑:雪饮阅读()
平时开发的过程中我们可能需要对一些查询操作进行优化,而优化之前的工作就是要对操作的性能进行分析,而ES提供了Profile API来帮助用户进行性能分析。它让用户了解如何在较低的级别执行搜索请求,这样用户就可以理解为什么某些请求比较慢,并采取措施改进它们。
需要注意的是Profile API不测量网络延迟、搜索资源获取阶段、请求在队列中花费的时间或在协调节点上合并碎片响应时花费的时间。
需要注意的是开启性能分析会给查询带来非常大的性能开销。所以不要尝试将一个开启了性能分析的请求和为开启性能分析的请求比对时间效率。
开启性能分析
需要开启性能分析,只需要在原有请求中设置"profile": true。
那么此时一个即便是get方法的查询请求,也需要添加请求体了,如:
请求体:
{
"profile": true
}
响应结果:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "accountdetail-2021.08",
"_type": "type1",
"_id": "6",
"_score": 1.0,
"_source": {
"AccountID": "2021.08",
"bbq": "上次货币质入金额",
"PreFundMortgageOut": "上次货币质出金额",
"PreMargin": "上次占用的保证金",
"PreMortgage": "上次质押金额"
}
}
]
},
"profile": {
"shards": [
{
"id": "[qyWfA-ewRZe_ZLeMwNimGw][accountdetail-2021.08][0]",
"searches": [
{
"query": [
{
"type": "MatchAllDocsQuery",
"description": "*:*",
"time_in_nanos": 35300,
"breakdown": {
"set_min_competitive_score_count": 0,
"match_count": 0,
"shallow_advance_count": 0,
"set_min_competitive_score": 0,
"next_doc": 1400,
"match": 0,
"next_doc_count": 1,
"score_count": 1,
"compute_max_score_count": 0,
"compute_max_score": 0,
"advance": 1700,
"advance_count": 1,
"score": 800,
"build_scorer_count": 2,
"create_weight": 2200,
"shallow_advance": 0,
"create_weight_count": 1,
"build_scorer": 29200
}
}
],
"rewrite_time": 1800,
"collector": [
{
"name": "SimpleTopScoreDocCollector",
"reason": "search_top_hits",
"time_in_nanos": 8200
}
]
}
],
"aggregations": []
}
]
}
}
响应结果虽然很长,但是我们只需要关注profile这个根下的节点对象
这些就是性能报告。
关键字词:elasticSearch,Profile,性能分析