首页 > 解决方案 > ElasticSearch 配置文件 API `time_in_nanoseconds` 值高于 `took` 时间

问题描述

我正在使用 ElasticSearch 配置文件 API 来帮助处理慢速查询。

当我阅读弹性搜索分析文档时,听起来time_in_nanos分片中查询的值应该小于took运行分析查询时的总时间。

但是,我得到了以下结果:

{
  "took": 109695,
   ...
  "profile": {
    "shards": [
       {
         "searches": [
           {
             "query": [
               {
                 "type": "BooleanQuery",
                 "time": "1550750.786ms",
                 "time_in_nanos": 1550750786163
                 ...
               }
             ]
           }
         ]
       }
       ...
     ]
  }
}

所以,我看到查询took 109695ms ~= 109seconds 这似乎是正确的。

但是,我看到了对应于超过分钟的1550750786163值。这与值不匹配。该命令大约需要 2 分钟,因此时间似乎准确,而time_in_nanos20tookcurltooktime_in_nanos时间似乎不准确。

time_in_nanos解释ElasticSearch 配置文件查询中的值的正确方法是什么?

ES 版本:5.6

标签: elasticsearchelasticsearch-5

解决方案


根据 Elastic search Github 存储库,配置文件时间是抽样的结果。因为它们是抽样的,所以原始计时数字对于大型查询可能不准确。

但是,这些数字可用于将查询的部分与查询的其他部分进行比较,以确定各个部分的相对费用。

来源:https ://github.com/elastic/elasticsearch/issues/33489


推荐阅读