弹性搜索在桶聚合和基数上给出错误的结果

时间:2016-10-21 22:38:23

标签: elasticsearch elasticsearch-aggregation

我正在编写一个弹性搜索查询,以便在两个不同的时间段内获取唯一身份用户。还有用户总数。这是为了确定今天网站的唯一用户。

我计划的东西是计算直到昨天的总用户和用户,然后减去(total_users - users_until_yesterday)以获取今天的唯一用户。

users_until_yesterday是before_and_after_today聚合中的第一个存储桶。

当我运行此查询时,我得到的users_until_yesterday的值大于total_users。我不知道原因

提前感谢您的帮助。

{
"size": 0,
"query": {
    "filtered": {
        "filter": {
            "bool": {
                "must": [
                    {"range": {"timestamp": {"gte": "0", "lte": "now"}}}
                ]
            }
        }
    }
},
"aggs": {
    "before_and_after_today": {
        "date_range": {"field": "timestamp", "ranges":[{"to": "now-1d"}, {"from": "now-1d"}]},
        "aggs": {"time_period_unique_users": {"cardinality": {"field": "userId"}}}
    },
    "total_users": {
        "cardinality": {"field": "userId"}
    }
}

}

更新:我现在通过使用precision_threshold作为一个非常高的值来实现它。我认为一旦我的值超过40,000就会出现问题,因为40,000是precision_threshold的最大值。

0 个答案:

没有答案