0

我正在编写一个弹性搜索查询来获取两个不同时间段的唯一用户。还有总用户。这是为了识别今天网站的唯一用户。

我打算做的是计算直到昨天的总用户和用户,然后减去 (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 的最大值。

4

0 回答 0