gpt4 book ai didi

数组字段的elasticsearch范围过滤器

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

我有一个包含整数数组的字段,例如:

_source: {
...
prices: [
20001,
30001
]
}

我想过滤结果,使价格至少包含一个介于以下值之间的值列表:[20002,30000] # 不会返回上面的文档,因为没有值在 20002 和 30000 之间但是 [10000,20002] 会返回上面的文档,因为上面文档的价格字段中的 20001 在 10000 和 20002 之间

最佳答案

Elasticsearch 始终认为字段可以包含值列表,因此 range filter应该管用。如果任何值与范围匹配,它将被过滤。

您可以将该过滤器用作 filtered query 的一部分:

{
"query": {
"filtered": {
"filter": {
"range": {
"prices": {
"gte": 10000,
"lte": 20002
}
}
}
}
}
}

但是,筛选查询在 2.0 中已弃用,因此,如果您使用的是 2.0,则最好使用 bool query。带过滤器:

{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"range": {
"prices": {
"gte": 10000,
"lte": 20002
}
}
}
}
}
}

请注意,我在我的示例中使用了过滤器,因为您要求使用过滤器:)

关于数组字段的elasticsearch范围过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460549/

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