gpt4 book ai didi

elasticsearch - ElasticSearch 中的并发事件聚合

转载 作者:行者123 更新时间:2023-11-29 02:50:40 25 4
gpt4 key购买 nike

我有许多文档表示带有 starts_atends_at 字段的事件。在给定的时间点,如果所讨论的点在 starts_at 之后和 ends_at 之前,则事件被认为是事件的。

我正在寻找一个聚合,它应该会生成一个日期直方图,其中每个桶都包含该时间间隔内的事件事件数。

到目前为止,我发现的最佳近似是创建一组桶来计算每个间隔中的开始次数,以及一组相应的桶来计算结束次数,然后通过减去数字来对它们进行后处理of 从每个区间的结束数开始:

{
"size": "0",
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"and": [
{
"term": {
"_type": "event"
}
},
{
"range": {
"starts_at": {
"gte": "2015-06-14T05:25:03Z",
"lte": "2015-06-21T05:25:03Z"
}
}
}
]
}
}
},
"aggs": {
"starts": {
"date_histogram": {
"field": "starts_at",
"interval": "15m",
"extended_bounds": {
"max": "2015-06-21T05:25:04Z",
"min": "2015-06-14T05:25:04Z"
},
"min_doc_count": 0
}
},
"ends": {
"date_histogram": {
"field": "ends_at",
"interval": "15m",
"extended_bounds": {
"max": "2015-06-21T05:25:04Z",
"min": "2015-06-14T05:25:04Z"
},
"min_doc_count": 0
}
}
}
}

我正在寻找类似 this solution 的内容.

有没有一种方法可以通过单个查询来实现?

最佳答案

我不是 100% 确定但即将到来 pipeline aggregations可能会在不久的将来以更优雅的方式解决这个问题。

同时,您可以选择所需的时间分辨率,并且在索引时间,除了 starts_atends_at 字段之外,您还将生成 active_at 字段。这将是一个时间戳数组,您可以使用任一术语(如果它被映射为 not_analyzed 字符串)或 date_histogram 聚合来为每个时间段获取正确的“事件事件计数”。

缺点是存储要求过高,性能可能更差,因为要聚合的字段值更多。无论如何,如果您不选择太高的时间分辨率(如 1 分钟),应该不会太糟糕。

关于elasticsearch - ElasticSearch 中的并发事件聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com