Elasticsearch——filter过滤查询
1. filter
filter,就是按照搜索条件过滤出需要的数据,不计算任何相关度分数,对相关度没有影响
2. filter 与 query 对比
- filter,按照搜索条件过滤出需要的数据,不计算任何相关度分数,对相关度没有影响
- 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过滤查询相关推荐
- elasticsearch使用Filter过滤查询操作(使用marvel插件)
1.filter查询语句 1)通过filter可以获取想要的数据 2)通过filter查询有缓存,大大提高查询效率,所以推荐使用filter查询 2.cache缓存 3.实例数据,准备数据: POST ...
- ElasticSearch bool过滤查询
bool过滤查询 可以实现组合过滤查询 格式: { "bool": { "must: 0, "should: O, "must not":0 ...
- 【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 ...
- Elasticsearch filter和query的不同
1.query和filter的本质区别? 以下几张图能更好的概括: query关注点:此文档与此查询子句的匹配程度如何? filter关注点:此文档和查询子句匹配吗? 2.Query检索细化关注点 ...
- 吃透 | Elasticsearch filter和query的不同
少啰嗦,直接看东西.--罗永浩 1.query和filter的本质区别? 以下几张图能更好的概括: query关注点:此文档与此查询子句的匹配程度如何? filter关注点:此文档和查询子句匹配吗? ...
- Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计
Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...
- Elasticsearch query和filter过滤有什么不同
1. 概述 在使用DSL进行Elasticsearch的查询中,通常我们都是使用query进行过滤匹配,比如下面这段代码 GET /my_index/_search {"query" ...
- Elasticearch Filter Query 过滤查询--(五)
Elasticearch Filter Query 过滤查询 1,过滤查询 ES查询操作分为2种:查询(query)和 过滤(filter). 1. Query,默认计算每个返回文档的得分,然后根据得 ...
- [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations)
原文地址为: [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations) 本章翻译自Elasticsearch官方指南的Filtering ...
最新文章
- java安全编码指南之:堆污染Heap pollution
- 台式计算机是32位还64位,怎么看电脑是32位还是64位
- 第三次作业(词频统计及其效能分析)
- python01_python简介
- linux sock_raw原始套接字编程
- bzoj 1833: [ZJOI2010]count 数字计数(数字0-9的个数)
- python重写和重载的区别_Java 重写(Override)与重载(Overload)
- dotproject问题。
- 最全微信小程序源码项目开发代码合集
- 10款超好用插件,助你玩转Chrome浏览器
- 51单片机实现流水灯
- CSS3科技雷达扫描动画js特效
- GIS等级考试知识集锦
- 恶意软件及反病毒学习总结
- python数据分析与应用第四章实训答案_《python数据分析与应用》第四章:pandas统计分析基础...
- nodex 解决跨哉请求的解决方案express
- 阿里云容器服务全线升级,ACK Pro开启公测、边缘容器商业化
- 没有人会疼自己没人会懂,会理解:伤感空间日志
- Spire.Doc在Word中插入图片时,自适应宽度设置
- 【20181027T1】洛阳怀【推结论+线性筛+分解质因数+GCD性质】
热门文章
- [网摘]动态SQL中set与select对变量赋值的影响
- [JavaScript] promise中.then()方法
- javascript基础系列:堆栈内存(stackamp;heap)(二)
- 7-7 印度大壶节 (25 分)
- 7-7 念数字 (10 分)
- 采用分治法求一个整数序列中的最大值和最小值
- Eclipse利用Database Connections连接数据库并实现从数据库逆向生成Hibernate带注解的实体类
- C语言-数据结构-可变长顺序表的初始化,插入和输出
- 在命令提示符中运行c语言程序,【命令提示符运行exe】命令提示符运行文件_命令提示符运行程序-系统城...
- fragment怎么获得上下文环境_Flask 源码剖析 (三):Flask 的上下文机制 (上)