前言
在日常项目开发中我们使用聚合函数COUNT()计数,SUM()求和再或者是AVG()求平均数并配合GROUP BY函数来完成,如果是在ES中我们则需要使用aggs(aggregations)来实现。
使用
1.根据用户聚合
GET behavior/_search
{
"size": 0, // 不需要返回文档,可设置为0.
"aggs": {
"group_by_store": { // 自定义的命名
"terms": {
"field": "store_id" // 聚合使用的字段名,类似于group by store_id
}
}
},
"query": {
...
}
}
2.同时使用两个字段聚合
GET behavior/_search
{
"size": 0, // 不需要返回文档,可设置为0.
"aggs": {
"group_by_store": { // 自定义的命名
"terms": {
"field": "store_id" // 聚合使用的字段名,类似于group by store_id
}
},
"group_by_day": {
"terms": {
"field": "visit_day"
}
}
},
"query": {
...
}
}
3.根据用户聚合并返回最早的访问时间,需要嵌套一层(max&avg&sum可同理代入使用)
"aggs": {
"store_id": {
"terms": {
"field": "store_id",
"size": 10000
},
"aggs": {
"time": { // 自定义命名
"min": { // 类似于min函数返回分组最小的一个
"field": "operation_time" // 分组字段
}
}
}
}
}