elasticsearch实现桶式聚合统计

一、聚合分析统计

在开发过程中,我们经常会碰到各种统计分类的需求,比如获取一个数据集的总和、平均值、统计每个月的订单数量、每个月的注册用户数量等等,传统的手段是使用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是聚合查询的关键词,按照时间进行聚合统计,统计一天中每个小时的数量

如下显示


image.png

你可能感兴趣的:(elasticsearch实现桶式聚合统计)