Elasticsearch具备强大的分析器API,可用于检查和分析你的搜索查询,然而,响应是一个很是大的JSON blob,很难手工分析。html
X-Pack包含Search Profiler工具,能够将此JSON输出转换为易于导航的可视化,使你可以更快地诊断和调试性能较差的查询。ios
在Kibana中自动启用搜索概要分析器,它位于Kibana的Dev Tools选项卡下。浏览器
要开始分析查询:elasticsearch
http://localhost:5601/
。将默认的match_all
查询替换为你要分析的查询,而后单击Profile。
Search Profiler显示搜索的索引的名称,每一个索引中的分片以及查询所花费的时间,如下示例显示了对match_all
查询进行概要分析的结果,搜索了三个索引:.monitoring-kibana-2-2016.11.30
,.monitoring-data-2
和test
。编辑器
若是咱们仔细查看测试索引的信息,咱们能够从累积时间看到查询花了0.132ms来执行,在索引中的五个碎片中(DWZD0iosQNeJMTvb4q1JDw
0到5),碎片3是最慢的(0.053ms),其次是碎片2(0.038ms),碎片按时间降序排序。ide
Cumulative Time指标是各个分片时间的总和,它不必定是查询返回的实际时间(挂钟时间),因为可能在多个节点上并行处理分片,所以挂钟时间可能远远小于累积时间,可是,若是碎片在同一节点上并置并串行执行,则挂钟时间更接近累积时间。虽然Cumulative Time指标对于比较索引和碎片的性能颇有用,但它并不必定表明实际的物理查询时间。工具
在此示例中,在碎片上运行了一个“MatchAllDocsQuery”
,因为它是惟一的查询运行,所以它占用了100%的时间,当你将鼠标悬停在一行上时,“搜索概要分析器”会显示有关查询组件的其余信息。性能
该面板显示了低级Lucene方法的时序细分,有关更多信息,请参阅时序细分的参考文档。测试
要了解查询树在搜索概要分析器中的显示方式,让咱们看一个更复杂的查询。ui
索引如下数据:
POST test/test/_bulk {"index":{}} {"name":"aaron","age":23,"hair":"brown"} {"index":{}} {"name":"sue","age":19,"hair":"red"} {"index":{}} {"name":"sally","age":19,"hair":"blonde"} {"index":{}} {"name":"george","age":19,"hair":"blonde"} {"index":{}} {"name":"fred","age":69,"hair":"blonde"}
_all
的输入框),这会将分析查询限制为test
索引。