如何在ElasticSearch 1.0中的聚合范围查询中使用doc_count

时间:2014-02-26 01:23:07

标签: syntax elasticsearch aggregation range

我的ES群集中​​有很多用户生成的事件。每个事件都包含用户的UUID。

我正在尝试编写一个查询,根据每个用户生成的事件数量,将用户分为低,中,高活动。

我正在使用此查询来获取每个用户生成的事件数:

{
    "aggs" : {
        "users" : { 
            "terms" : { "field" : "user_id.raw" }
         }
    }
}

这样可以正常工作,但我需要使用之前的结果“doc_count”将结果转换为范围查询,以便我可以将每个用户排序为低,中,高活动桶。

我尝试了一些方法来使用子聚合访问doc_count字段,但从未设法让它工作。我认为这将是一个相当常见的用例,但似乎无法破解它,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

我已经针对此问题更新了https://github.com/elasticsearch/elasticsearch/issues/4983?_pjax=%23js-repo-pjax-container

看起来对聚合框架(但是)的一个小改进非常有用。

答案 1 :(得分:0)

你可以做类似的事情:

{
    "aggs" : {
            "tally" : {
                "sum" : {
                    "script": "1"
                }
            },
            "aggs" : {
                  //refer to tally here as the value would be same as doc_count
            }
    } 
}