gpt4 book ai didi

elasticsearch - 筛选聚合中的多值字段

转载 作者:行者123 更新时间:2023-12-03 01:51:09 25 4
gpt4 key购买 nike

我有一个这样的实体:

{
id: "id1",
values: [0, 1, 5, 20, 30]
}

values数组包含大量的值(最多100k),这些值实际上是日期(为便于使用,我在这里使用了整数)。因此,我需要提取多个文档中某个范围内的所有日期。我需要符合某些条件的所有文档的值的并集。

目前,我有一个查询和一个术语聚合来获取所有值。但是我需要将值过滤在范围内。即使有问题的文档中的值介于1到100k之间,也可以告诉聚合只取10到20之间的值吗?

最佳答案

可以这样做,但是在您的情况下会很棘手。对于像您的示例这样的数值,您可以通过在数组中提供它们来filter它们。

{
"size": 0,
"aggs": {
"unique": {
"terms": {
"field": "date_values",
"size": 10,
"include": [10,11,12,13,14,15,16,17,18,19,20]
}
}
}
}

但由于您有日期,因此必须在单独的字段中将它们索引为 字符串 index:not_analyzed 。您可以根据需要使用 copy_to。之后,您将需要 正则表达式来过滤日期范围。
{
"size": 0,
"aggs": {
"unique": {
"terms": {
"field": "string_date_values",
"size": 10,
"include": "2016.*|2015.*"
}
}
}
}

上面的查询只会为您提供以2016或2015开头的日期,例如2016-04-04、2015-11-10等。

关于elasticsearch - 筛选聚合中的多值字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40339992/

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