elasticsearch聚合查询之三种聚合类型
聚合查询分三类:桶聚合、指标聚合、管道聚合。
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" } } } }
.......管道聚合待深入学习
标签:
Elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)