通过弹性创建时间来增加用户

时间:2017-02-11 12:43:39

标签: elasticsearch

我正在使用created字段存储用户(索引为日期),我想检索与某个日期相关的计数,并按上个月的日期汇总。想象一下,每隔一天网站就会有新的注册 - 所以我想得到这样的东西:

date         count
2017-02-01   10
2017-02-02   10
2017-02-03   11
2017-02-04   11
2017-02-05   12
2017-02-06   12
2017-02-07   13
2017-02-08   13
2017-02-09   14
2017-02-10   14
2017-02-11   15
...

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

请查看Date Histogram Aggregation,例如:

{
    "aggs" : {
        "registrations_over_time" : {
            "date_histogram" : {
                "field" : "created",
                "interval" : "day"
            }
        }
    }
}

答案 1 :(得分:0)

date_histogram很有帮助,但只返回"新用户"每天。要获得特定日期的用户总数,我必须添加以下内容:

{
    "aggs": {
        "users": {
            "date_histogram": {
                "field": "created",
                "interval": "day",
                "format": "yyyy-MM-dd"
            },
            "aggs": {
                "users_stats": {
                    "stats": {
                        "field": "id"
                    }
                },
                "cumulative_users": {
                    "cumulative_sum": {
                        "buckets_path": "users_stats.count"
                    }
                }
            }
        }
    }
}