elasticsearch 数组字段的elasticsearch范围过滤器
我有一个包含整数数组的字段,例如:elasticsearch 数组字段的elasticsearch范围过滤器,elasticsearch,filter,range,elasticsearch,Filter,Range,我有一个包含整数数组的字段,例如: _source: { ... prices: [ 20001, 30001 ] } 我希望过滤结果,使prices至少包含一个介于以下值之间的值列表: [2000230000]不会返回上述文档,因为没有值介于20002和30000之间 但是[1000020002]将返回上述文档,因为上述文档的prices字段中的20001介于10000和20002之间Elasticsearch始终认为字段可以包含值列表,因此,a应该可以工作。如果
_source: {
...
prices: [
20001,
30001
]
}
我希望过滤结果,使prices至少包含一个介于以下值之间的值列表:
[2000230000]
不会返回上述文档,因为没有值介于20002和30000之间
但是
[1000020002]
将返回上述文档,因为上述文档的prices字段中的20001介于10000和20002之间Elasticsearch始终认为字段可以包含值列表,因此,a应该可以工作。如果任何值与该范围匹配,则将在其中进行筛选
您可以将该过滤器用作以下内容的一部分:
但是,过滤查询在2.0中是不推荐使用的,因此,如果您使用2.0,则可以更好地将过滤查询与过滤器一起使用:
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"range": {
"prices": {
"gte": 10000,
"lte": 20002
}
}
}
}
}
}
请注意,我在示例中使用了过滤器,因为您要求使用过滤器:)谢谢您的回答,它正确地解决了我的问题。完成!这是我第一次在这里提问:)我犯了把整数转换成字符串的错误。。。。。最好让他们保持现状
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"range": {
"prices": {
"gte": 10000,
"lte": 20002
}
}
}
}
}
}