1

我试图弄清楚为什么我们的新集群很慢并且发现了一些奇怪的东西。

执行此操作时:

{
  "query": {
    "bool": {
      "filter": [
        { "term": { "reference_id": 4489 } },
        { "range": { "created_at": { "gte": "2020-03-15" }} }
      ]
    }
  }
}

并检查分析,看起来它在“匹配”中花费了很多时间:

IndexOrDocValuesQuery
created_at:[1584230400000 TO 9223372036854775807]
match, 2.3s, 84.2%

如果运行以下查询,它会过滤另一个字段(相同的映射),它根本不使用任何字段match

{
  "query": {
    "bool": {
      "filter": [
        { "term": { "root_id": 3413 } },
        { "range": { "created_at": { "gte": "2020-03-15" }} }
      ]
    }
  }
}

现在它只花了一些时间advance(匹配为 0):

IndexOrDocValuesQuery
created_at:[1584230400000 TO 9223372036854775807]
advance, 376.5ms, 82.5%

两者root_idreference_id都被映射为long(将更改为keyword我认为它至少会更快)。

现在,这两个查询正在过滤不同的字段,但仍然是相同类型的字段,为什么它会在第一个查询中进行缓慢的“匹配”?有任何想法吗?我能以某种方式弄清楚吗?另外,它为什么要进行“匹配”?我只做过滤所以不应该做评分,对吧?

4

0 回答 0