Rob*_*bin 3 range filter elasticsearch
我有一个包含整数数组的字段,例如:
_source: {
...
prices: [
20001,
30001
]
}
Run Code Online (Sandbox Code Playgroud)
我想过滤结果,使得价格至少包含一个值列表,例如:
[20002,30000] #不会返回上述文档,因为没有值介于20002和30000之间,但[10000,20002]会返回上面的文档,因为价格字段中的20001以上文件的数据介于10000和20002之间
Elasticsearch始终认为字段可以包含值列表,因此范围过滤器应该起作用.如果任何值与范围匹配,则将对其进行过滤.
您可以将该过滤器用作过滤查询的一部分:
{
"query": {
"filtered": {
"filter": {
"range": {
"prices": {
"gte": 10000,
"lte": 20002
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,过滤查询在2.0中已弃用,因此,如果您使用的是2.0,则可以更好地将bool查询与过滤器一起使用:
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"range": {
"prices": {
"gte": 10000,
"lte": 20002
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我在我的示例中使用了一个过滤器,因为您要求使用过滤器:)
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |