上一章简单介绍了 ES的复杂查询(三) , 如果没有看过,请观看上一章
这一篇,老蝴蝶带着大家学习一下聚合查询的相应操作.
聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,
当然还有很 多其他的聚合,例如取最大值、平均值等等
使用 aggs
一. 查询最大值 max
如, 查询年龄的最大值
{
"aggs":{
"max_age":{
"max":{"field":"age"}
}
},
"size":0
}
类似于 max(age)
二. 查询最小值 min
与 max 差不多
{
"aggs":{
"min_age":{
"min":{"field":"age"}
}
},
"size":0
}
类似于 min(size)
三. 对字段求和 sum
{
"aggs":{
"sum_age":{
"sum":{"field":"age"}
}
},
"size":0
}
类似于 sum(age)
四. 求平均值 avg
{
"aggs":{
"avg_age":{
"avg":{"field":"age"}
}
},
"size":0
}
类似于 avg(age)
五. 对某个字段去重后再取总数
{
"aggs":{
"distinct_age":{
"cardinality":{"field":"age"}
}
},
"size":0
}
类似于 count(distinct(age))
六. State 聚合
stats 聚合,对某个字段一次性返回 count,max,min,avg 和 sum五个指标
{
"aggs":{
"stats_age":{
"stats":{"field":"age"}
}
},
"size":0
}
七. 桶聚合查询
相当于 group by
七.一 聚合, 分组统计
分组和聚合 没有 层级关系
{
"aggs":{
"age_groupby":{
"terms":{"field":"age"}
}
},
"size":0
}
为 select age, count(1) group by age , 展示的是 数量 。 24岁的有两个人.
七.二 分组下再进行聚合
先进行分组, 再进行聚合, 有 层级关系
{
"aggs":{
"age_groupby":{
"terms":{"field":"age"},
"aggs":{
"sum_age":{
"sum":{"field":"age"}
}
}
}
},
"size":0
}
类似于 sum(age) , age group by age
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!