1、aggregation (执行聚合)
聚合提供了从数据中分组和提取数据的能力。最简单的聚合大致等于SQL的聚合函数。
在ElasticSearch中,你有执行搜索返回hit,并且同时返回聚合结果,把一个响应中所有hits分隔开的
能力,这是非常强大且有效的。您可以执行查询和多个聚合并且在一次使用中得到各自的返回结果,使用一次简介和简化的api来避免网络往返
语法
1 2 3 4 5 6 7 8 9 10 | "aggregations" : { "<aggregation_name>" : { //聚合名称 "<aggregation_type>" : { //聚合类型 <aggregation_body> //聚合体 } [, "meta" : { [<meta_data_body>] } ]? [, "aggregations" : { [<sub_aggregation>]+ } ]? } [, "<aggregation_name_2>" : { ... } ]* } |
1)需求:搜索address中包含mail的所有人的年龄和平均工资,但不显示这些人的详情
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | GET bank/_search { "query" : { "match" : { "address" : "mill" } }, "aggs" : { "ageagg" : { "terms" : { "field" : "age" , "size" : 10 } }, "ageavg" :{ "avg" : { "field" : "age" } }, "balanceavg" :{ "avg" : { "field" : "balance" } } } } |
2)按照年龄聚合,并求这些年龄段的人的平均薪资
(聚合里面套聚合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | GET /bank/_search { "query" :{ "match_all" : {} }, "aggs" : { "ageAgg" : { "terms" : { "field" : "age" , "size" : 10 }, "aggs" : { "balanceAvg" : { "avg" : { "field" : "balance" } } } } }, "size" : 0 ##过滤掉查询的结果 } |
3)查出所有的年龄分布,并且这些年龄段中M的平均薪资和F的平均薪资,以及这个年龄段总体的平均薪资
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | GET bank/_search { "query" : { "match_all" : {} }, "aggs" : { "agegg" : { //聚合年龄 "terms" : { "field" : "age" , "size" : 100 }, "aggs" : { "genderagg" :{ //在年龄的聚合结果上聚合性别 "terms" : { "field" : "gender.keyword" , "size" : 2 }, "aggs" : { "balanceagg" : { //xx岁 M性别的平均薪资 "avg" : { "field" : "balance" } } } }, "agebalanceaavg" :{ //xx岁的平均薪资 "avg" : { "field" : "balance" } } } } } } |
分类:
ElasticSearch入门
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!