假设我有包含用户 ID 和他们访问我的网站的时间戳的文档。我想知道有多少用户访问过该网站 x 次。我一直无法找到正确的聚合组合来完成此任务。
示例数据:
用户ID | 时间戳 |
---|---|
A | 12:30 |
A | 13:50 |
B | 11:10 |
B | 12:11 |
B | 10:20 |
C | 15:00 |
C | 19:00 |
我想获得一个输出,为我提供如下数据:
参观 | 数 |
---|---|
2 | 2 |
3 | 1 |
理想情况下使用 Kibana 中的可视化,但此时我会选择 Elasticsearch 查询中的结果。我预计拥有 10 万左右的独立用户。
我尝试在 Elasticsearch 中使用管道聚合,但无法让它以我期望的方式显示数据。并且它将限制于我初始聚合中唯一值的数量。
我在自己的索引中尝试过。虽然不一样,但是你能尝试一下吗?如果这不合适,我会删除这个答案。
GET my_index/_search
{
"size": 0,
"aggs": {
"unique_users": {
"cardinality": {
"field": "user.id"
}
},
"visits_per_user": {
"terms": {
"field": "user.id"
},
"aggs": {
"visit_count": {
"cardinality": {
"field": "@timestamp"
}
}
}
}
}
}