2 つの異なる期間のユニーク ユーザーを取得するエラスティック検索クエリを作成しています。また、総ユーザー数。これは、今日の Web サイトのユニーク ユーザーを特定するためのものです。
私が計画しているのは、合計ユーザーと昨日までのユーザーを計算し、(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を非常に高い値として使用することで、今のところ機能しています。precision_threshold の最大値は 40,000 であるため、値が 40,000 を超えると問題になると思います。