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的结果。
