gpt4 book ai didi

ElasticSearch extended_bounds 最小最大

转载 作者:行者123 更新时间:2023-11-29 02:54:09 26 4
gpt4 key购买 nike

我使用 elasticsearch aggregations 返回两个不同的聚合组,一个用于当前周,一个用于前一周,我的当前周聚合如下所示:

"aggregations": {            
"current": {
"date_histogram": {
"field": "date",
"interval": "1d",
"min_doc_count": 0,
"extended_bounds": {
"min": new Date().setDate(new Date().getDate() - 7),
"max": new Date().getDate()
}
}
}
}

此时一切都很好,我正在使用 min_doc_countextended_bounds 来填补空桶的空白,以防有空桶。

在我的另一个聚合上,我以几乎相同的方式重复这个过程,但我希望我的桶是前一个时期的!

我知道 extended_bounds 不是过滤桶 因此我想像这样在我的聚合之上添加一个过滤器:

"aggregations": {
filtered: {
"filter" : {
"bool": {
"must": [{
"range" : {
date: {
from: new Date().setDate(new Date().getDate() - 14),
to: new Date().setDate(new Date().getDate() - 7)
}
}
}]
}
},
},
"previous": {
"date_histogram": {
"field": "date",
"interval": "1d",
"min_doc_count": 0,
"extended_bounds": {
"min": new Date().setDate(new Date().getDate() - 14),
"max": new Date().setDate(new Date().getDate() - 7)
}
}
}
}

第二个聚合应该及时返回,恰好 14 天到 7 天前。我知道 min 有效,但 max 无效,即使我使用过滤器来限制范围,返回的桶一直持续到今天,我在这里使用 must 但似乎没有做任何事情。我对 ES 很陌生,也许我在这里遗漏了一些明显的东西,请原谅我缺乏知识。

最佳答案

根据documentation :

Note that (as the name suggest) extended_bounds is not filtering buckets. Meaning, if the extended_bounds.min is higher than the values extracted from the documents, the documents will still dictate what the first bucket will be (and the same goes for the extended_bounds.max and the last bucket). For filtering buckets, one should nest the histogram aggregation under a range filter aggregation with the appropriate from/to settings.

Example:

{
"query" : {
"filtered" : { "filter": { "range" : { "price" : { "to" : "500" } } } }
},
"aggs" : {
"prices" : {
"histogram" : {
"field" : "price",
"interval" : 50,
"min_doc_count" : 0,
"extended_bounds" : {
"min" : 0,
"max" : 500
}
}
}
}
}

长话短说:使用查询过滤器,或将直方图聚合嵌套在过滤器聚合中。在您的示例中,您没有嵌套聚合,而是并排使用它们(因此直方图 agg 未被 filter-agg 过滤)。

关于ElasticSearch extended_bounds 最小最大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26685806/

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