elasticsearch聚合之terms
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch聚合之terms相关的知识,希望对你有一定的参考价值。
参考技术A 得到如下结果doc_count_error_upper_bound:被遗漏的terms 可能的最大值,
sum_other_doc_count: 除了返回给用户的terms,剩下的terms总数
使用terms聚合,结果可能带有一定的偏差与错误性。
我们想要获取name字段中出现频率最高的前5个。
此时,客户端向ES发送聚合请求,主节点接收到请求后,会向每个独立的分片发送该请求。
分片独立的计算自己分片上的前5个name,然后返回。当所有的分片结果都返回后,在主节点进行结果的合并,再求出频率最高的前5个,返回给客户端。
这样就会造成一定的误差,比如最后返回的前5个中,有一个叫A的,有50个文档;B有49。 但是由于每个分片独立的保存信息,信息的分布也是不确定的。 有可能第一个分片中B的信息有2个,但是没有排到前5,所以没有在最后合并的结果中出现。 这就导致B的总数少计算了2,本来可能排到第一位,却排到了A的后面。
Elasticsearch 学习之子聚集过滤
1. 获取子聚合结果总数 { "size": 0, "aggs": { "msisdnAgg": { "terms": { "field": "msisdn" }, "aggs": { "tagAggs": { "terms": { "field": "tags" } }, "sum_of_rul": { "sum_bucket": { "buckets_path": "tagAggs>_count" } } } } } } 2. 获取子聚合结果总数大于指定数 { "size": 0, "aggs": { "msisdnAgg": { "terms": { "field": "msisdn" }, "aggs": { "tagAggs": { "terms": { "field": "tags" } }, "sum_of_rul": { "sum_bucket": { "buckets_path": "tagAggs>_count" } }, "orderNumber_count_filter": { "bucket_selector": { "buckets_path": { "orderNumberCount": "sum_of_rul" }, "script": "orderNumberCount > 2 " } } } } } }
以上是关于elasticsearch聚合之terms的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch进阶篇之聚合(aggregations)和映射(mapping)
Elasticsearch之指标,分桶,管道聚合之操作类ElasticsearchRestTemplate和RestHighLevelClient以及dsl