Elastic搜索中嵌套布尔查询和非嵌套布尔查询之间的性能差异

时间:2019-12-10 07:02:07

标签: elasticsearch

想知道这两个获得相同结果的查询之间在性能上是否有很大差异

{
  "query": {
    "bool": {
      "must": [
        "bool": {
          "must": [
            {
              "term": {
                "color": "red"
              }
            },
            {
              "term": {
                "fruit": "strawberry"
              }
            }
          ]
        }
      }
    }
  }
}

{
  "query": {
      "bool": {
          "must": [
            {
              "term": {
                "color": "red"
              }
            },
            {
              "term": {
                "fruit": "strawberry"
              }
            }
          ]
        }
      }
}

1 个答案:

答案 0 :(得分:1)

两个查询的执行计划完全相同。将?explain=true添加到您的URL中,以便您可以看到两个查询的解释方式。

如果您不需要评分,只需使用是/否过滤,即:

,则可以使用filter而不是must来提高性能。

{
  "query": {
    "bool": {
      "filter": [                    <-- change this
        {
          "term": {
            "color": "red"
          }
        },
        {
          "term": {
            "fruit": "strawberry"
          }
        }
      ]
    }
  }
}