聚合查询分三类:桶聚合、指标聚合、管道聚合。
1:桶聚合:通俗的讲就是按某个属性分类,统计该属性数量
GET how2java/product/_search //查询每个地方商品数量 { "size": 0, "aggs": { "place_agg": { "terms": { "field": "place.keyword", //按地域分类, "size": 100, //默认只查询数据量最大的前10条数据 } } } }
结果:
2:指标聚合:常用的就是查询平均值、最大最小值、总数、去重总数、求和
GET how2java/product/_search { "size": 0, "aggs": { "max_agg": { "max": { "field": "price" } }, "min_agg": { "min": { "field": "price" } }, "avg_agg": { "avg": { "field": "price" } }, "count_agg": { "value_count": { "field": "price" } }, "cardinality_agg": { "cardinality": { "field": "place.keyword" } } } }
这个比较好理解
前两种比较好理解
3、管道聚合,又叫二次聚合,用于一些复杂的查询
GET how2java/_search //求商品平均价格最低和最高的地域和其平均价格 { "size": 0, "aggs": { "place_bucket": { //第一步 "terms": { //先按地域分桶 "field": "place.keyword", "size": 100 }, "aggs": { //在地域桶的同级求每个地域商品的平均价格 "avg_price": { "avg": { "field": "price" } } } }, "min_place": { //第二步 二次聚合 使用pipeline "min_bucket": {//求平均价格最低的桶 "buckets_path": "place_bucket>avg_price" } }, "max_place": { "max_bucket": {//求平均价格最高的桶 "buckets_path": "place_bucket>avg_price" } } } }
.......管道聚合待深入学习
标签:聚合,agg,price,查询,field,elasticsearch,place,avg From: https://www.cnblogs.com/wscw/p/16782991.html