0

我正在使用重要术语聚合,它使用以下查询为我提供了 n 重要术语及其 doc_count 和 bg_c​​ount:

{
  "query" : {
      "terms" : {"user_id": ["x"]}
  },
  "aggregations" : {
      "word_cloud" : {
          "significant_terms": { 
              "field" : "transcript.results.alternatives.words.word.keyword",
              "size": 200
          }
      }
  },
  "size": 0
}

如果我采用重要术语聚合返回的术语并对该术语进行匹配短语查询。然后,我得到的 hits 值与聚合中的 doc_count 不同。

匹配词组查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "preprocess_data.results.alternatives.transcript": "<term>"
          }
        },
        {
          "match_phrase": {
            "user_id": "x"
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 22
}

该字段preprocess_data.results.alternatives.transcript具有以下映射:

{
    "type" : "text",
    "fields" : {
        "keyword" : {
        "type" : "keyword",
        "ignore_above" : 256
        }
    }
}

在进行聚合和匹配短语搜索时,我无法解释文档计数的差异。请帮忙。

4

1 回答 1

0

这种行为是因为相关数据doc_count是从索引的所有分片中获取的,并且在重要术语聚合的情况下,这些数据可能是近似的。引用弹性搜索文档

有多少文档包含结果中提供的术语的计数基于从每个分片返回的样本的总和,因此可能是:

  • 如果某些分片没有在其顶部样本中提供给定术语的数字,则为低
  • 考虑背景频率时很高,因为它可能会计算已删除文档中的出现次数

像大多数设计决策一样,这是权衡的基础,我们选择以一些(通常很小的)不准确性为代价来提供快速性能。但是,下一节中介绍的大小和分片大小设置提供了帮助控制准确度级别的工具

于 2021-02-08T06:56:35.067 回答