如何解释elasticsearch中的查询

gao*_*wei 15 elasticsearch

我在elasticsearch中有一个复杂的查询.它很慢.我想优化它.但我不知道如何工作.如何解释查询,就像Sql解释一样.

我看到elastichsearch _valite/query?explain.它可以解释得分.但我需要查看详细的执行计划.

{
  "post_filter": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "term": {
                  "base.sysCode": "2801"
                }
              },
              {
                "term": {
                  "base.status": [
                    12,
                    0
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  },
  "fields": [
    "base.sysCode",
    "base.orderNo"
  ]
}
Run Code Online (Sandbox Code Playgroud)

结果

{
"valid": true,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"explanations": [
{
"index": "odi_bus_betad_2013",
"valid": true,
"explanation": "ConstantScore(*:*)"
}
]
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*enG 26

解释API

计算查询和特定文档的分数说明.无论文档是否与特定查询匹配,这都可以提供有用的反馈.

"explain": true

GET /_search
{
    "explain": true,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
Run Code Online (Sandbox Code Playgroud)

解释文档

Profile API

提供有关搜索请求中各个组件的执行的详细计时信息.它使用户能够深入了解如何在较低级别执行搜索请求,以便用户可以理解为什么某些请求很慢,并采取措施来改进它们.

"profile": true

GET /_search
{
  "profile": true,
  "query" : {
    "match" : { "user" : "kimchy" }
  }
}
Run Code Online (Sandbox Code Playgroud)

档案文件

  • 为什么这不是选定的答案? (2认同)

gre*_*ers 7

如果您运行的是最新版本,请将 profile 关键字粘贴到您的查询中:

GET binary/_search
{
   "profile": true,
    "query": {
     ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你有 X-Pack,你可以使用基于 GUI 的分析器来查看它的缓慢之处。遗憾的是在开源版本中不可用,但它只是上述输出的更漂亮版本 - https://www.elastic.co/guide/en/kibana/5.6/xpack-profiler.html

您可能可以进行 30 天的试用,或者如果幸运的话,您可能已经拥有 X-Pack 许可证。


ste*_*ent 1

解释 API 的用法是这里

\n\n
\n

解释 API 计算查询和特定文档的分数解释。这可以提供有用的反馈,无论文档是否与特定查询匹配\xe2\x80\x99。

\n
\n