1. filter

filter,就是按照搜索条件过滤出需要的数据,不计算任何相关度分数,对相关度没有影响

2. filter 与 query 对比

  1. filter,按照搜索条件过滤出需要的数据,不计算任何相关度分数,对相关度没有影响
  2. query,会去计算每个document相对于搜索条件的相关度,并按照相关度进行排序

在实际开发中,如果需要把最匹配搜索条件的数据先返回,那么用query,果只是要根据一些条件筛选出一部分数据,不关注其排序,那么用filter。

3. filter 与 query 性能

  • filter,不需要计算相关度分数,不需要按照相关度分数进行排序,同时还有内置的自动cache最常使用filter的数据, 性能好
  • query,要计算相关度分数,按照分数进行排序,而且无法cache结果.

4. 查询示例

 1GET /ecommerce/product/_search 2{ 3  "query": { 4    "bool": { 5      "must": [ 6        { 7          "match": { 8            "name": "yagao" 9          }10        }11      ],12      "should": [13        {14          "match": {15            "producer": "yagao"16          }1718        }19      ],20      "filter": {21        "range": {22          "price": {23            "gte": 25,24            "lt": 5025          }26        }27      }28    }29  },30  "sort": [31    {32      "price": {33        "order": "desc"34      }35    }36  ]37}复制代码

返回结果:

 1{ 2  "took": 0, 3  "timed_out": false, 4  "_shards": { 5    "total": 5, 6    "successful": 5, 7    "skipped": 0, 8    "failed": 0 9  },10  "hits": {11    "total": 3,12    "max_score": null,13    "hits": [14      {15        "_index": "ecommerce",16        "_type": "product",17        "_id": "3",18        "_score": null,19        "_source": {20          "name": "zhonghua yagao",21          "desc": "caoben zhiwu",22          "price": 40,23          "producer": "zhonghua producer",24          "tags": [25            "qingxin"26          ]27        },28        "sort": [29          4030        ]31      },32      {33        "_index": "ecommerce",34        "_type": "product",35        "_id": "1",36        "_score": null,37        "_source": {38          "name": "gaolujie yagao",39          "desc": "gaoxiao meibai",40          "price": 30,41          "producer": "gaolujie producer",42          "tags": [43            "meibai",44            "fangzhu"45          ]46        },47        "sort": [48          3049        ]50      },51      {52        "_index": "ecommerce",53        "_type": "product",54        "_id": "2",55        "_score": null,56        "_source": {57          "name": "jiajieshi yagao",58          "desc": "youxiao fangzhu",59          "price": 25,60          "producer": "jiajieshi producer",61          "tags": [62            "fangzhu"63          ]64        },65        "sort": [66          2567        ]68      }69    ]70  }71}复制代码

由于我们按照价格降序排列,所以没有计算相关度,_score都等于null

注意

对于range查询,单独使用语法为:

 1GET /ecommerce/product/_search 2{ 3  "query": { 4    "range": { 5      "price": { 6        "gte": 20, 7        "lte": 50 8      } 9    }10  }11}复制代码

这样能返回结果,但是如果多条件查询和range查询一起使用的话,需要将range放在bool查询的filter中,比如第一个例子。

转载于:https://juejin.im/post/5c6c0547518825622f12effd

Elasticsearch——filter过滤查询相关推荐

  1. elasticsearch使用Filter过滤查询操作(使用marvel插件)

    1.filter查询语句 1)通过filter可以获取想要的数据 2)通过filter查询有缓存,大大提高查询效率,所以推荐使用filter查询 2.cache缓存 3.实例数据,准备数据: POST ...

  2. ElasticSearch bool过滤查询

    bool过滤查询 可以实现组合过滤查询 格式: { "bool": { "must: 0, "should: O, "must not":0 ...

  3. 【ES笔记02】ElasticSearch数据库之查询操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

    这篇文章,主要介绍ElasticSearch数据库之查询操作(match.must.must_not.should._source.filter.range.exists.ids.term.terms ...

  4. Elasticsearch filter和query的不同

    1.query和filter的本质区别? 以下几张图能更好的概括:  query关注点:此文档与此查询子句的匹配程度如何? filter关注点:此文档和查询子句匹配吗? 2.Query检索细化关注点 ...

  5. 吃透 | Elasticsearch filter和query的不同

    少啰嗦,直接看东西.--罗永浩 1.query和filter的本质区别? 以下几张图能更好的概括: query关注点:此文档与此查询子句的匹配程度如何? filter关注点:此文档和查询子句匹配吗? ...

  6. Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计

    Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...

  7. Elasticsearch query和filter过滤有什么不同

    1. 概述 在使用DSL进行Elasticsearch的查询中,通常我们都是使用query进行过滤匹配,比如下面这段代码 GET /my_index/_search {"query" ...

  8. Elasticearch Filter Query 过滤查询--(五)

    Elasticearch Filter Query 过滤查询 1,过滤查询 ES查询操作分为2种:查询(query)和 过滤(filter). 1. Query,默认计算每个返回文档的得分,然后根据得 ...

  9. [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations)

    原文地址为: [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations) 本章翻译自Elasticsearch官方指南的Filtering ...

最新文章

  1. java安全编码指南之:堆污染Heap pollution
  2. 台式计算机是32位还64位,怎么看电脑是32位还是64位
  3. 第三次作业(词频统计及其效能分析)
  4. python01_python简介
  5. linux sock_raw原始套接字编程
  6. bzoj 1833: [ZJOI2010]count 数字计数(数字0-9的个数)
  7. python重写和重载的区别_Java 重写(Override)与重载(Overload)
  8. dotproject问题。
  9. 最全微信小程序源码项目开发代码合集
  10. 10款超好用插件,助你玩转Chrome浏览器
  11. 51单片机实现流水灯
  12. CSS3科技雷达扫描动画js特效
  13. GIS等级考试知识集锦
  14. 恶意软件及反病毒学习总结
  15. python数据分析与应用第四章实训答案_《python数据分析与应用》第四章:pandas统计分析基础...
  16. nodex 解决跨哉请求的解决方案express
  17. 阿里云容器服务全线升级,ACK Pro开启公测、边缘容器商业化
  18. 没有人会疼自己没人会懂,会理解:伤感空间日志
  19. Spire.Doc在Word中插入图片时,自适应宽度设置
  20. 【20181027T1】洛阳怀【推结论+线性筛+分解质因数+GCD性质】

热门文章

  1. [网摘]动态SQL中set与select对变量赋值的影响
  2. [JavaScript] promise中.then()方法
  3. javascript基础系列:堆栈内存(stackamp;heap)(二)
  4. 7-7 印度大壶节 (25 分)
  5. 7-7 念数字 (10 分)
  6. 采用分治法求一个整数序列中的最大值和最小值
  7. Eclipse利用Database Connections连接数据库并实现从数据库逆向生成Hibernate带注解的实体类
  8. C语言-数据结构-可变长顺序表的初始化,插入和输出
  9. 在命令提示符中运行c语言程序,【命令提示符运行exe】命令提示符运行文件_命令提示符运行程序-系统城...
  10. fragment怎么获得上下文环境_Flask 源码剖析 (三):Flask 的上下文机制 (上)