【问题标题】:Elasticsearch must clause faster than filterElasticsearch 的子句必须比过滤器快
【发布时间】:2021-05-11 06:19:48
【问题描述】:

我们使用的是 elasticsearch 7.2,最近我们观察到一些奇怪的事情

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

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

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

这匹配了大约 100 万份文档。第一个比第二个快(快 10 倍!)。由于得分,我预计 1 会更慢

另外,当我添加排序时,它们都变慢了(第二个保持不变,第一个变得和第二个一样慢)

【问题讨论】:

    标签: performance elasticsearch


    【解决方案1】:

    我怀疑“过滤器”会查看所有文档,而“术语”(或日期范围或匹配等)将查看索引值。在新客户端上发现了类似的东西,并且很困惑为什么他们在顶层使用“过滤器”,而不是范围或匹配。

    顺便说一句,这里可能有问题...所以先试试你的系统

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      相关资源
      最近更新 更多