在es中的聚合有两个概念,一个是桶Buckets
,还有一个是指标Metrics
,两个概念映射到sql语句的分组中时,桶相当于group by
后面的分组,例如按性别分组,则有男性桶和女性桶.指标相当于select
中的数据,例如统计各个性别的人数,则人数为指标.
aggs
在es中聚合操作被置于顶层参数aggs
之下,其全拼为aggregations
,其在es中等效于aggs
.
一个示例如下:
{
"size" : 0,
"aggs" : {
"group_sex" : {
"terms" : {
"field" : "sex"
}
}
}
}
- 其中
size
为需要需要取出的数据数量,若不带此参数,将会返回所有用于聚合的文档.
- 其中
-
group_sex
字段为分组名称,是自定义的.
-
-
"field" : "sex"
表示按照sex
字段分组
-
执行聚合后得到的结果如下:
{
...
"hits": {
"hits": []
},
"aggregations": {
"group_sex": {
"buckets": [
{
"key": "man",
"doc_count": 4
},
{
"key": "woman",
"doc_count": 2
}
}
}
}
- 因为我们设置了 size 参数,所以不会有 hits 搜索结果返回。
- group_sex聚合是作为 aggregations 字段的一部分被返回的。
- 每个桶的 key 都与 color 字段里找到的唯一词对应。它总会包含 doc_count 字段,告诉我们包含该词项的文档数量。
网友评论