gpt4 book ai didi

elasticsearch - 弹性-选择前5个匹配后进行过滤

转载 作者:行者123 更新时间:2023-12-03 02:16:34 27 4
gpt4 key购买 nike

我正在使用Kibana中的警报功能,并且想检查字段的最后5个连续值是否超过阈值x,但是如果我在 flex 查询中使用过滤器,则会在前N个聚合之前应用该过滤器。
有没有一种方法可以使用其他选择器或方法在之后应用过滤器,或者检查最后的连续值是否超过阈值?我不想轻易地在触发条件下进行检查,因为这将返回ctx中的所有文档,而不仅仅是返回超出我要在警报消息中显示的阈值的文档。
我已经坚持了一段时间,我只看过博客文章说在N的顶部不可能进行子聚合,因此不胜感激。
这是我的查询:

{ 
"size": 500,
"query": {
"bool": {
"filter": [
{
"match_all": {
"boost": 1
}
},
{
"match_phrase": {
"client.id": {
"query": "42",
"slop": 0,
"zero_terms_query": "NONE",
"boost": 1
}
}
},
{
"range": {
"@timestamp": {
"from": "{{period_end}}||-10m",
"to": "{{period_end}}",
"include_lower": true,
"include_upper": true,
"format": "epoch_millis",
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}

},
"aggs": {
"2": {
"terms": {
"field": "component.name",
"order": {
"_key": "desc"
},
"size": 50
},
"aggs": {
"3": {
"terms": {
"field": "client.name.keyword",
"order": {
"_key": "desc"
},
"size": 5
},
"aggs": {
"1": {
"top_hits": {
"docvalue_fields": [
{
"field": "gc.oldgen.used",
"format": "use_field_mapping"
}
],
"_source": "gc.oldgen.used",
"size": 5,
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
]
}
}
}
}
}
}
}
}
}

最佳答案

您是否尝试使用子过滤器聚合:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html
或者,您可以使用管道聚合来操纵聚合结果
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline.html
顺便说一句,对客户端ID的字词查询看起来更合适。

关于elasticsearch - 弹性-选择前5个匹配后进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63455941/

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