对搜索出来的结果进行数据过滤。不会到es库里去搜,不会去计算文档的相关度分数,所以过滤的性能会比较高,过滤器可以和全文搜索结合在一起使用。
post_filter元素是一个顶层元素,只会对搜索结果进行过滤。不会计算数据的匹配度相关性分数,不会根据分数去排序,query则相反,会计算分数,也会按照分数去排序。
使用场景:
- query:根据用户搜索条件检索匹配记录
- post_filter:用于查询后,对结果数据的筛选
实操:查询账户金额大于80元,小于160元的用户。并且生日在1998-07-14的用户
- gte:大于等于
- lte:小于等于
- gt:大于
- lt:小于
(除此以外还能做其他的match等操作也行) ```shell POST /shop/_doc/_search
{
“query”: {
“match”: {
“desc”: “慕课网游戏”
}
},
“post_filter”: {
“range”: {
“money”: {
“gt”: 60,
“lt”: 1000
}
}
}
}
```