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有感(一)

elasticsearch aggregation - 桶的精确计数

elasticsearch aggregation 过程(未完)

elasticsearch aggregation 缓存

ElasticSearch--aggregations聚合分析