ES的聚合有两个概念,桶和指标
其中,桶简单来说就是满足特定条件的文档的集合,类似于mysql中的group by
而指标就是简单的数学运算(例如最小值、平均值、最大值,还有汇总),这些是通过文档的值来计算的。类似于mysql中的sum,count等
聚合 是由桶和指标组成的。
聚合语句的格式为
可以参考官网
curl -X GET "localhost:9200/cars/transactions/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size" : 0,
// aggs代表开始一个聚合
"aggs": {
// colors是自定义的聚合名
"colors": {
// 具体的聚合操作,即groupby,这里指的是按照颜色分类
"terms": {
"field": "color"
},
// 聚合下面再嵌套一个聚合,即groupby后再对新数据进行groupby
"aggs": {
// 这是一个求平均值的聚合
"avg_price": { "avg": { "field": "price" }
},
// 与avg_price聚合是同级的
"make" : {
"terms" : {
"field" : "make"
},
// 又嵌套了一个聚合,求最低值和最高值
"aggs" : {
"min_price" : { "min": { "field": "price"} },
"max_price" : { "max": { "field": "price"} }
}
}
}
}
}
}
'