ES 聚合分组查询的语法如下:
GETindex/_search
{
"size": 0,
"aggs": {
"group_by_field": {
"terms": {
"field": "field_name"
}
}
}
}
其中 index
是索引名称,size
设置为 0 意味着只返回聚合结果而不返回文档。 aggs
字段是聚合查询的核心部分,这里以 group_by_field
为例进行分组查询,其中 terms
指定了分组的字段名称。
这样的查询会返回按照 field_name
字段进行分组后每个分组的文档数。
类似还有 count, avg,min,max,sum,top_hits等聚合函数。 例如:
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
}
}
这样就是求价格平均值
"aggs": {
"group_by_author": {
"terms": {
"field": "author"
},
"aggs": {
"top_books": {
"top_hits": {
"size": 3
}
}
}
}
}
这样就是求每个作者的3本销量最高的书