我正在编写一个弹性搜索查询来获取两个不同时间段的唯一用户。还有总用户。这是为了识别今天网站的唯一用户。
我打算做的是计算直到昨天的总用户和用户,然后减去 (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 的最大值。