elasticsearch aggregation - 桶的精确计数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch aggregation - 桶的精确计数相关的知识,希望对你有一定的参考价值。
Elasticsearch新手问题。我将shakespeare.json加载到Elastic中,我试图弄清楚如何进行类似于select speaker, count(1) from line group by speaker
的聚合。 (“Line”是文档的类型,“speaker”是其中一个属性。)
现在我有这样的查询:
{
"size": 0,
"query": {
"query": {
"match": {
"play_name": "HAMLET"
}
}
},
"aggs": {
"line_count": {
"terms": {
"field": "speaker.speaker_raw"
}
}
}
}
结果看起来正确,但ElasticSearch文档指定术语聚合的文档计数是近似值(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html)。还有其他一些魔法来获取存储桶中的确切数量吗?
另外,我已经发现我必须预先在索引上定义一个字段,以获得未分析的“发言人”版本,以确保我可以聚合原始字段值,而不是标记化。 (见Elasticsearch - Cardinality over Full Field Value)
根据documentation,聚合术语中近似计数的原因是由于关于“顶部x”结果的碎片争用是“偏向的”。
如果你设置"size": 0
,我很确定Elasticsearch会返回准确的结果。
设置大小:0现在已弃用,原因是具有高基数字段值的群集上存在内存问题。您只能使用1到2147483647之间的数字。
资料来源:https://github.com/elastic/elasticsearch/issues/18838
以上是关于elasticsearch aggregation - 桶的精确计数的主要内容,如果未能解决你的问题,请参考以下文章
分析Elasticsearch的Aggregation有感(一)
elasticsearch aggregation - 桶的精确计数