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之高亮查询,聚合查询,

Elasticsearch之高亮查询,聚合查询,

Elasticsearch聚合 之 Terms

elasticsearch之聚合函数

Elasticsearch之指标,分桶,管道聚合之操作类ElasticsearchRestTemplate和RestHighLevelClient以及dsl