赞
踩
目录
filter也是一种查询方式,它和query的用法是非常相似的。他们的相同之处都是根据条件将符合条件的文档查询出来,但不同的是,query是过程导向,而filter是结果导向,它们的侧重点是不一样的。
- qeury 更倾向于当前文档和查询语句的相关(匹配)度是怎么样的,会在查询的过程中进行一个相关度评分,也就是 score值。
- filter更倾向于将符合查询条件的文档快速找到并返回。整个过程不会进行评分操作。
因为,filter的性能对比query来说会更好一点,但filter的结果是无序的,而query会根据评分进行降序排列。
这里给大家展示两种简单的filter用法:
- bool查询中嵌套filter
- constant_score中嵌套filter
- ##bool查询中嵌套filter
- GET /product/_search
- {
- "query": {
- "bool": {
- "filter": [
- {
- "term": {
- "name": "xiaomi"
- }
- }
- ]
- }
- }
- }
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
查看结果我们可以发现, bool查询中使用filter, 每个文档中的评分值_score都是0, 所以filter查询中是不对文档相关度进行评分计算的.
- GET /product/_search
- {
- "query": {
- "constant_score": {
- "filter": {
- "term": {
- "name": "xiaomi"
- }
- },
- "boost": 1.21
- }
- }
- }
constant_score是给查询的文档一个固定的评分值, 值的大小有boost参数来设置, 查看查询结果可以看出, 每个文档的评分都是1.21, 并且max_score也是1.21
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。