gpt4 book ai didi

elasticsearch - 聚合低于值的最大时间戳

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

因此,我们尝试按颜色聚合所有文档,对于每种颜色,找到最大时间戳作为 ma​​x_timestamp。然后,仅过滤 ma​​x_timestamp 低于 now-5m 的桶。这里的想法是检查最近 5 分钟是否有任何颜色没有报告的文件。

这是我们现在得到的:

{
"size": 0,
"aggs": {
"colors_aggs": {
"terms": {
"field": "color",
"size": 10
},
"aggs": {
"max_timestamp": {
"max": {
"field": "timestamp"
}
},
"aggs": {
"filter": {
"range": {
"timestamp": {
"lt": "now-5m"
}
}
}
}
}
}
}
}

好像忽略了第三个聚合。显示时间戳大于 now-5m 的桶。

有什么帮助吗?

最佳答案

也许您可以使用脚本在最终聚合中过滤掉不需要的记录(在您的案例中,记录带有 timestamp > "now - 5m"),然后是您的最终聚合(最后是输出)将仅基于想要的记录。查询应该是这样的:

{
"size": 0,
"aggs": {
"colors_aggs": {
"terms": {
"field": "color",
"size": 10
},
"aggs": {
"maximals": {
"max": {
"field": "timestamp":
}
},
"max_bucket_filter": {
"bucket_selector": {
"buckets_path": {
"maxs": "max_timestamp"
},
"script": {
"lang": "expression",
"script": "maxs < [CurrentUnixTime x 1000]"
}
}
}
}
}
}
}

请注意,上面的脚本不能接受关键字now-5m,因此您每次执行查询时都必须设置当前的 unix 时间。

关于elasticsearch - 聚合低于值的最大时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37456582/

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