filter
的使用方法
ES中filter
的用法有两种,一种是filted query
,如下:
{
"query":{
"filtered":{
"query":{
"term":{"title":"kitchen3"}
},
"filter":{
"term":{"price":1000}
}
}
}
}
这种方式已经
deprecated
了,可以通过boolQuery
实现。
{
"query": {
"bool": {
"must": {
"term": {
"term":{"title":"kitchen3"}
}
},
"filter": {
"term": {
"price":1000
}
}
}
}
}
另一种是直接放在根目录:
{
"query":{
"term":{"title":"kitchen3"}
},
"filter":{
"term":{"price":1000}
}
}
the order of keys in query JSON do not influence results.
区别
- 根目录中的
filter
在query
后执行。在filter query
先执行filter
,不计算score
,再执行query
。 - 如果还要在搜索结果中执行
aggregation
操作,filter query
聚合的是filter
和query
之后的结果,而filter
聚合的是query
的结果。