《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(11) https://developer.aliyun.com/article/1229229
四、指标聚合和桶聚合的混合使用
例子1
例如我们需要统计产品价格的分布情况以及每个分布区间的平均值,此时需要使用直方图聚合和平均值聚合进行统计:
GET order/_search { "aggs": { "my_histogram": { "histogram": { "field": "price", "interval": 1000 }, "aggs": { "avg_bucket": { "avg": { "field": "price" } } } } } } //聚合结果 { ...... "aggregations" : { "my_histogram" : { "buckets" : [ { "key" : 7000.0, "doc_count" : 2, "avg_bucket" : { "value" : 7924.51 } }, { "key" : 8000.0, "doc_count" : 2, "avg_bucket" : { "value" : 8676.869999999999 } }, { "key" : 9000.0, "doc_count" : 2, "avg_bucket" : { "value" : 9987.77 } } ] } } }
例子2
获取每个销售的最高销售额,我们可以以销售最为分组的依据后,再获取每个分组中的最大销售额:
GET order/_search?size=0 { "aggs" : { "sales" : { "terms": { "field": "sales_name" }, "aggs": { "max_price": { "max": { "field": "price" } } } } } }
返回结果:
{ ... "aggregations" : { "sales" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 3970, "buckets" : [ { "key" : "Lucas", "doc_count" : 641, "max_price" : { "value" : 1800000.0 } }, { "key" : "Seven", "doc_count" : 620, "max_price" : { "value" : 1800000.0 } }, { "key" : "Jack", "doc_count" : 615, "max_price" : { "value" : 1800000.0 } } ] } } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(13) https://developer.aliyun.com/article/1229225