一、聚合分析统计
在开发过程中,我们经常会碰到各种统计分类的需求,比如获取一个数据集的总和、平均值、统计每个月的订单数量、每个月的注册用户数量等等,传统的手段是使用mysql,不过当遇到这种需求的时候,往往会成为系统的查询瓶颈。不过es对于这种聚合查询提供了很好的支持,也能够允许存储很大的一个数据量。我们接下来看看如何使用
二、aggs
如下一个es 的restful api查询
{
"query": {
"bool": {
"filter": [{
"range": {
"create_time": {
"gt": 1563897600,
"lt": 1563984000
}
}
}],
"must": [{
"match": {
"game_id": 4
}
}]
}
},
"explain": true,
"aggs": {
"sales_over_time": {
"date_histogram": {
"field": "date",
"calendar_interval": "hour",
"format": "H",
"keyed": true,
"time_zone": "+08:00"
}
}
}
}
分析:
bool中主要是查询条件,查询create_time在1563897600和1563984000的区间,并且game_id等于4的文档数据
aggs是聚合查询的关键词,按照时间进行聚合统计,统计一天中每个小时的数量
如下显示