我正在编写一个弹性搜索查询,以便在两个不同的时间段内获取唯一身份用户。还有用户总数。这是为了确定今天网站的唯一用户。
我计划的东西是计算直到昨天的总用户和用户,然后减去(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的最大值。