问题描述
我正在使用重要术语聚合,它使用以下查询为我提供了 n 个重要术语及其 doc_count 和 bg_count:
getValue(this)
如果我使用重要术语聚合返回的术语并对该术语进行匹配短语查询。然后我得到了与聚合中的 doc_count 不同的命中值。
匹配词组查询:
this.checked
字段 {
"query" : {
"terms" : {"user_id": ["x"]}
},"aggregations" : {
"word_cloud" : {
"significant_terms": {
"field" : "transcript.results.alternatives.words.word.keyword","size": 200
}
}
},"size": 0
}
具有以下映射:
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"preprocess_data.results.alternatives.transcript": "<term>"
}
},{
"match_phrase": {
"user_id": "x"
}
}
]
}
},"from": 0,"size": 22
}
在进行聚合和匹配短语搜索时,我无法解释文档计数的差异。请帮忙。
解决方法
这种行为是因为有关 doc_count
的数据是从索引的所有分片中获取的,并且在重要术语聚合的情况下,此数据可能是近似值。引用弹性搜索documentation:
包含结果中提供的术语的文档数 基于对从每个分片返回的样本求和,因此 可能是:
- 如果某些分片未在其顶级样本中提供给定术语的数字,则为低
- 在考虑背景频率时很高,因为它可能会计算已删除文档中的出现次数
与大多数设计决策一样,这是权衡的基础,其中 我们选择以一些代价提供快速的性能 (通常很小)不准确。但是,大小和分片大小 下一节中介绍的设置提供了帮助控制 准确度