Elasticsearch必须比过滤器更快的子句

问题描述 投票:2回答:1

我们使用elasticsearch 7.2,最近一直在观察一些奇怪的东西

我们尝试执行以下两个查询

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "customer(keyword_field)": "big_customer"
          }
        }
      ]
    }
  }
}

{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "customer(keyword_field)": "big_customer"
          }
        }
      ]
    }
  }
}

这匹配大约一百万个文档。第一个比第二个快(快十倍!)。我预计1会因为得分而变慢

而且,当我添加排序时,它们都变慢了(第2个保持不变,第1个变得和第2个一样慢)

performance elasticsearch
1个回答
0
投票

[由于您正在使用未分析的term查询,即它将不会经过分析过程(字符过滤器,令牌生成器,令牌过滤器),并且因为它们与再次未被分析的关键字字段相匹配,因此将不会再次通过。

© www.soinside.com 2019 - 2024. All rights reserved.