三种类型的聚合
1、桶聚合
类似与SQL中的group by
text类型不能用于聚合查询、keyword
语法:常规聚合
{
"aggs":{
"term_brand":{ //聚合名称
"trems":{ //查询函数
"field":"brand.keyword" //聚合字段
}
}
}
}
范围聚合 查询价格为2000 、2000-5000、5000以上 范围内 各个手机的数量
{
"aggs":{
"range_price":{ //聚合名称
"range":{
"field":"price",
"ranges":[
{
"to":2000,
},
{
"form":2000,
"to":5000
},
{
"from":5000
}
]
}
}
}
}
Multi Terms
当在聚合的时候需要对多个字段同时聚合的时候,可以使用multi_Terms来完成
{
"aggs":{
"agg_name":{ //聚合名称
"multi_terms":{//查询函数
"trems":[
{
"field":"field1" //聚合字段
} ,
{
"field":"field2" //聚合字段
}
]
}
}
}
}
2、指标聚合
场景:用于统计某个指标,如最大值、最小值、平均值,可以使用桶聚合一起使用,如按照商品类型分桶,统计每个桶的平均价格
指标函数:
- 平均值:Avg
- 最大值:Max
- 最小值:Min
- 求和:Sum
- 详细信息:Status
- 数量:Value count
统计商品价格的 最大值、最小值、和平均值
GET goods/_search
{
"aggs":{
"metric_max":{
"max":{
"field":"price"
}
},
"metric_min":{
"min":{
"field":"price"
}
},
"metric_avg":{
"avg":{
"field":"price "
}
}
}
}
3、管道聚合
统计平均价格最低商品品牌
1、对品牌分桶
2、对每个桶计算平均价格
3、计算平均价格最低值
GET goods/_search
{
"aggs":{
"agg_pip":{
"terms":{
"filed":"brand.keyword"
},
"aggs":{
"avg_price":{
"avg""{
"field":"price"
}
}
}
}
},
"min_avg_price":{
"min_bucket":{
"buckets_path":"agg_pip>avg_price"
}
}
}