我应该使用哪些弹性搜索聚合?

时间:2017-10-06 10:30:37

标签: elasticsearch charts aggregate kibana

我需要创建一个“按日期划分的活跃用户数”的条形图。活跃用户表示最近7天登录的用户。 所以我需要计算其last_activity日期在最后7天内的用户总数。我需要为我的图表中的每个栏(日)做这件事。

我知道需要使用聚合弹性搜索来完成,但不确定

我应该使用哪些聚合?存储桶聚合,管道聚合?

如果你知道一个类似的例子,请告诉我。

在这里,您可以找到用户“john”的两个示例文档示例

{
    "userid": "john",
    "last_activity": "2017-08-09T16:10:10.396+01:00",
    "date_of_this_report": "2017-09-24T00:00:00+01:00"
}


{
    "userid": "john",
    "last_activity": "2017-08-09T16:10:10.396+01:00",
    "date_of_this_report": "2017-09-25T00:00:00+01:00"
}

1 个答案:

答案 0 :(得分:0)

您可以使用elasticsearch的{​​{3}}操作过滤最近7天的最后一项活动的用户。您可以在date math

之前推送过滤器
if (!annotatedQuery.contains(String.format(":%s", parameter.getName()))) {
            throw new IllegalStateException(String.format(
                    "Using named parameters for method %s but parameter '%s' not found in annotated query '%s'!", method,
                    parameter.getName(), annotatedQuery));
        }

希望这适合你。