当前位置:   article > 正文

ElasticSearch: 搜索与查询-过滤器_elasticsearch 查询条件filter是什么

elasticsearch 查询条件filter是什么

过滤器 Filter

目录

一.  什么是filter

二. 用法

1. bool查询中filter

1.1 查询语句

1.2 查询结果

2. constant_score中使用filter

2.1 查询语句

2.2 查询结果


一.  什么是filter

filter也是一种查询方式,它和query的用法是非常相似的。他们的相同之处都是根据条件将符合条件的文档查询出来,但不同的是,query是过程导向,而filter是结果导向,它们的侧重点是不一样的。

  • qeury 更倾向于当前文档和查询语句的相关(匹配)度是怎么样的,会在查询的过程中进行一个相关度评分,也就是 score值。
  • filter更倾向于将符合查询条件的文档快速找到并返回。整个过程不会进行评分操作。

因为,filter的性能对比query来说会更好一点,但filter的结果是无序的,而query会根据评分进行降序排列。

二. 用法

这里给大家展示两种简单的filter用法: 

  • bool查询中嵌套filter
  • constant_score中嵌套filter

1. bool查询中filter

1.1 查询语句

  1. ##bool查询中嵌套filter
  2. GET /product/_search
  3. {
  4. "query": {
  5. "bool": {
  6. "filter": [
  7. {
  8. "term": {
  9. "name": "xiaomi"
  10. }
  11. }
  12. ]
  13. }
  14. }
  15. }

1.2 查询结果

查看结果我们可以发现, bool查询中使用filter, 每个文档中的评分值_score都是0, 所以filter查询中是不对文档相关度进行评分计算的.

2. constant_score中使用filter

2.1 查询语句

  1. GET /product/_search
  2. {
  3. "query": {
  4. "constant_score": {
  5. "filter": {
  6. "term": {
  7. "name": "xiaomi"
  8. }
  9. },
  10. "boost": 1.21
  11. }
  12. }
  13. }

2.2 查询结果

constant_score是给查询的文档一个固定的评分值, 值的大小有boost参数来设置, 查看查询结果可以看出, 每个文档的评分都是1.21, 并且max_score也是1.21

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/750705
推荐阅读
相关标签
  

闽ICP备14008679号