《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(10) https://developer.aliyun.com/article/1229231
6、管道聚合 pipeline
1)基础用法
Elasticsearch 通过管道聚合支持对聚合分析的结果进行再次聚合分析。大多数管道聚合需要另一个聚合作为它的输入,输入聚合通过 bucket_path 参数定义:
l 聚合分隔符为 >
l 指标分隔符为 .
l 聚合名为<聚合的名称>
l 指标为<聚合的指标>
l 路径为<聚合名>[<聚合分隔符><聚合名>]*[<指标分隔符><指标>]
例如:路径 "mybucket>myavg",会将 myavg 中的平均值指标作为 mybucket 分组聚合的输入。
pipeline 分析的结果会输出到原结果进行汇总,根据位置的不同分为两类:
Sibling 兄弟聚合,结果和现有分析结果同级。例如:Max,Min,Avg 及 Sum Bucket
Stats, Extened Status Bucket,Percentiles Bucket。
Parent 父类聚合,结果内嵌到现有的聚合分析结果之中。例如:Derivative(求导)、Cumultive Sum(累计求和)、Moving Function(滑动窗口)。
2)Sibling 兄弟聚合
Sibling 兄弟聚合:例如要对每个品牌的平均售价再求平均,在下面我们的 buckets_path 定义为一个从 aggs 根开始的一个完整的父聚合的路径。我们通过其名为 terms_bucket 的父聚合terms,引用了名为 avg_bucket 的同级聚合。 因此,目标汇总的完整路径为terms_bucket>avg_bucket。
GET order/_search { "aggs": { "terms_bucket": { "terms": { "field": "brand", "size": 3 }, "aggs": { "avg_bucket": { "avg": { "field": "price" } } } }, "avgofbrandprice":{ "avg_bucket": { "buckets_path": "terms_bucket>avg_bucket" } } } } //聚合结果 { ...... "aggregations" : { "terms_bucket" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "HUAWEI", "doc_count" : 4, "avg_bucket" : { "value" : 8734.25 } }, { "key" : "Apple", "doc_count" : 3, "avg_bucket" : { "value" : 8991.85 } } ] }, "avgofbrandprice" : { "value" : 8863.05 } } }
3)Parent 父类聚合
Parent 父类聚合:例如根据产品价格做直方图统计,在每个统计桶中做平均值得累加和统计
GET order/_search { "aggs": { "my_histogram": { "histogram": { "field": "price", "interval": 1000 }, "aggs": { "avg_bucket": { "avg": { "field": "price" } }, "my_cumulative_sum":{ "cumulative_sum": { "buckets_path": "avg_bucket" } } } } } } //聚合结果为 "aggregations" : { "my_histogram" : { "buckets" : [ { "key" : 7000.0, "doc_count" : 2, "avg_bucket" : { "value" : 7924.51 }, "my_cumulative_sum" : { "value" : 7924.51 } }, { "key" : 8000.0, "doc_count" : 2, "avg_bucket" : { "value" : 8676.869999999999 }, "my_cumulative_sum" : { "value" : 16601.379999999997 } } { "key" : 9000.0, "doc_count" : 2, "avg_bucket" : { "value" : 9987.77 }, "my_cumulative_sum" : { "value" : 26589.149999999998 } } ] } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(12) https://developer.aliyun.com/article/1229228