提问人:dcolazin 提问时间:11/17/2023 更新时间:11/17/2023 访问量:21
Elasticsearch 查询中的进一步聚合日期直方图
Further aggregate date histogram in Elasticsearch query
问:
我正在尝试提取每个事件发生的天数和最后一次发生的天数。目前我写了以下查询:event_type
{
"size": 0,
"query": { ... },
"_source": false,
"aggregations": {
"events": {
"terms": { "field": "event_type" },
"aggs": {
"event_timestamp": {
"date_histogram": {
"field": "@timestamp",
"calendar_interval": "day",
"min_doc_count": 1,
"order": { "_key": "desc" }
}
}
}
}
}
}
提取要进一步转换的数据。就我而言,我只需要每个 ,第一个存储桶的键和存储桶的数量。这可以在提取后的第二步中轻松完成,但让 Elastic 来做会更干净。event_type
event_timestamp
event_timestamp
最大存储桶(或指标)聚合似乎没有帮助,因为我在聚合中看不到合适的。buckets_path
date_histogram
答:
1赞
Val
11/17/2023
#1
良好的开端!!
下面是一个查询,它返回每个时间戳的最新时间戳以及每个存储桶的每日存储桶数(为此,您可以使用bucket_script
管道聚合,它只返回聚合中的存储桶数)。event_type
event_type
date_histogram
另请注意,查询字符串参数允许您只返回对您重要的内容,即您可以删除您不感兴趣的日期直方图:filter_path
POST test/_search?filter_path=**.latest_timestamp.hits.hits._source,**.bucket_count,**.events.buckets.key
{
"size": 0,
"_source": false,
"query": {...},
"aggregations": {
"events": {
"terms": {
"field": "event_type"
},
"aggs": {
"latest_timestamp": {
"top_hits": {
"size": 1,
"sort": {"@timestamp": "desc"},
"_source": ["@timestamp"]
}
},
"event_timestamp": {
"date_histogram": {
"field": "@timestamp",
"calendar_interval": "day",
"min_doc_count": 1,
"order": {
"_key": "desc"
}
}
},
"bucket_count": {
"bucket_script": {
"buckets_path": {
"count": "event_timestamp._bucket_count"
},
"script": "params.count"
}
}
}
}
}
}
对于每个事件类型,你将获得如下所示的内容:
{
"key": "2", <--- event type
"latest": {
"hits": {
"hits": [
{
"_source": {
"@timestamp": "2023-01-05" <--- latest timestamp
}
}
]
}
},
"bucket_count": {
"value": 4 <--- bucket count
}
},
评论
0赞
dcolazin
11/17/2023
谢谢!注意:我在桶计数中需要的是“count”:“event_timestamp._bucket_count”
0赞
Val
11/17/2023
是的,这就是_count已经返回的,请参阅我更新的答案
0赞
dcolazin
11/17/2023
不,我看到了一些区别:_count返回文档计数而不是存储桶计数
1赞
Val
11/17/2023
我的错,你是对的,它已修复👍,我每天使用一个独特的文档进行测试,因此感到困惑,对不起
评论