关于es查询dsl的filter与must,term与match的区别
【1】创建es7 索引
put localhost:9200/pdi_cust , 注意 PUB_CUST_LABEL 字段分词了。 es7 不支持type ,所以 无需指定type。
{ "mappings" :{ "properties":{"RCRD_ID":{"type":"keyword"}, "BUSI_CODE":{"type":"keyword"}, "STATE":{"type":"keyword"}, "LOANS":{"type":"nested", "properties" :{"LOAN_NUM":{"type":"keyword"}, "PUB_CUST_LABEL":{"type":"text"}, "DATA_SRC":{"type":"keyword"}, "CUST_NUM": {"type":"keyword"}, "LOAN_BAL_SUM":{"type":"double"}, "OVD_MONEY_SUM": {"type": "double"}}}}}
}
【2】插入索引文档: post localhost:9200/pdi_cust/_doc/tr_rd_01
{ "RCRD_ID":"tr_rd_01", "STATE":"PDOS" , "BUSI_CODE":"pdi", "LOANS":[{"CUST_NUM":"CUST_NUM_01", "DATA_SRC":"VALD", "LOAN_BAL_SUM":"1111", "LOAN_NUM":"LOAN_NUM_01", "OVD_MONEY_SUM":"1111", "PUB_CUST_LABEL":"张三 李四 王五"}]
}
【3】查询索引所有文档
post localhost:9200/pdi_cust/_search
{}
// 查询es所有文档
{"took": 4,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": 1.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_score": 1.0,"_source": {"RCRD_ID": "tr_rd_01","STATE": "PDOS","BUSI_CODE": "pdi","LOANS": [{"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "1111","LOAN_NUM": "LOAN_NUM_01","OVD_MONEY_SUM": "1111","PUB_CUST_LABEL": "张三 李四 王五"},{"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "2222","LOAN_NUM": "LOAN_NUM_02","OVD_MONEY_SUM": "2222","PUB_CUST_LABEL": "张三2 李四2 王五2"}]}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_02","_score": 1.0,"_source": {"RCRD_ID": "tr_rd_02","STATE": "PDOS","BUSI_CODE": "pdi","LOANS": [{"CUST_NUM": "CUST_NUM_02","DATA_SRC": "VALD","LOAN_BAL_SUM": "1113","LOAN_NUM": "LOAN_NUM_3","OVD_MONEY_SUM": "1113","PUB_CUST_LABEL": "李四"},{"CUST_NUM": "CUST_NUM_02","DATA_SRC": "VALD","LOAN_BAL_SUM": "1114","LOAN_NUM": "LOAN_NUM_4","OVD_MONEY_SUM": "1114","PUB_CUST_LABEL": "张三"}]}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_03","_score": 1.0,"_source": {"RCRD_ID": "tr_rd_03","STATE": "PDOS","BUSI_CODE": "pdi","LOANS": [{"CUST_NUM": "CUST_NUM_03","DATA_SRC": "VALD","LOAN_BAL_SUM": "1115","LOAN_NUM": "LOAN_NUM_5","OVD_MONEY_SUM": "1115","PUB_CUST_LABEL": "李四 王五"},{"CUST_NUM": "CUST_NUM_03","DATA_SRC": "VALD","LOAN_BAL_SUM": "1116","LOAN_NUM": "LOAN_NUM_6","OVD_MONEY_SUM": "1116","PUB_CUST_LABEL": "张三"}]}}]}
}
【4】根据嵌套类型查询 (filter 与 must 是属于同一个级别的查询方式,都可以作为 query->bool 的属性)
【3】根据嵌套类型查询 (filter 与 must 是属于同一个级别的查询方式,都可以作为 query->bool 的属性)
3.1、filter: 不计算评分, 查询效率高;有缓存; (推荐)
+ term: 精确匹配;
+ match: 模糊匹配, 倒排索引;
3.2、must: 要计算评分,查询效率低;无缓存;
+term: 精确匹配 , 要评分;
+match:模糊匹配, 要评分;
【荔枝】
1、使用 filter+term实现精确匹配不计分查询;
// dsl
{"_source":["RCRD_ID", "STATE", "BUSI_CODE"], "query":{"bool":{"filter":[{"term":{"STATE":"PDOS"} } , {"nested":{"path":"LOANS", "query":{"bool":{"filter":[{"term": {"LOANS.LOAN_NUM": "LOAN_NUM_01"}}] }}, "inner_hits": { }} }]} }
}
// 查询结果
{"took": 8,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 0.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_score": 0.0,"_source": {"RCRD_ID": "tr_rd_01","STATE": "PDOS","BUSI_CODE": "pdi"},"inner_hits": {"LOANS": {"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 0.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_nested": {"field": "LOANS","offset": 0},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "1111","LOAN_NUM": "LOAN_NUM_01","OVD_MONEY_SUM": "1111","PUB_CUST_LABEL": "张三 李四 王五"}}]}}}}]}
}
score 为0则表示没有计算得分;
2、使用filter+match 使用不计算得分,但模糊匹配;
// dsl
{"_source":["RCRD_ID", "STATE", "BUSI_CODE"], "query":{"bool":{"filter":[{"match":{"STATE":"PDOS"} } , {"nested":{"path":"LOANS", "query":{"bool":{"filter":[{"match": {"LOANS.PUB_CUST_LABEL": "张三 李四"}}] }}, "inner_hits": { }} }]} }
}
// 结果
{"took": 35,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": 0.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_score": 0.0,"_source": {"RCRD_ID": "tr_rd_01","STATE": "PDOS","BUSI_CODE": "pdi"},"inner_hits": {"LOANS": {"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 0.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_nested": {"field": "LOANS","offset": 0},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "1111","LOAN_NUM": "LOAN_NUM_01","OVD_MONEY_SUM": "1111","PUB_CUST_LABEL": "张三 李四 王五"}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_nested": {"field": "LOANS","offset": 1},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "2222","LOAN_NUM": "LOAN_NUM_02","OVD_MONEY_SUM": "2222","PUB_CUST_LABEL": "张三2 李四2 王五2"}}]}}}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_02","_score": 0.0,"_source": {"RCRD_ID": "tr_rd_02","STATE": "PDOS","BUSI_CODE": "pdi"},"inner_hits": {"LOANS": {"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 0.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_02","_nested": {"field": "LOANS","offset": 0},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_02","DATA_SRC": "VALD","LOAN_BAL_SUM": "1113","LOAN_NUM": "LOAN_NUM_3","OVD_MONEY_SUM": "1113","PUB_CUST_LABEL": "李四"}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_02","_nested": {"field": "LOANS","offset": 1},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_02","DATA_SRC": "VALD","LOAN_BAL_SUM": "1114","LOAN_NUM": "LOAN_NUM_4","OVD_MONEY_SUM": "1114","PUB_CUST_LABEL": "张三"}}]}}}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_03","_score": 0.0,"_source": {"RCRD_ID": "tr_rd_03","STATE": "PDOS","BUSI_CODE": "pdi"},"inner_hits": {"LOANS": {"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 0.0,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_03","_nested": {"field": "LOANS","offset": 0},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_03","DATA_SRC": "VALD","LOAN_BAL_SUM": "1115","LOAN_NUM": "LOAN_NUM_5","OVD_MONEY_SUM": "1115","PUB_CUST_LABEL": "李四 王五"}},{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_03","_nested": {"field": "LOANS","offset": 1},"_score": 0.0,"_source": {"CUST_NUM": "CUST_NUM_03","DATA_SRC": "VALD","LOAN_BAL_SUM": "1116","LOAN_NUM": "LOAN_NUM_6","OVD_MONEY_SUM": "1116","PUB_CUST_LABEL": "张三"}}]}}}}]}
}
以上dsl,把 match 换位 term, 查询不到任何结果,因为 PUB_CUST_LABEL 是 text 类型,分词了,term是精确匹配;
3、使用 must+term, 实现计算得分并精确匹配(查询效率低于 filter+term),因为 must要计算匹配得分
// dsl
{"_source":["RCRD_ID", "STATE", "BUSI_CODE"], "query":{"bool":{"must":[{"term":{"STATE":"PDOS"} } , {"nested":{"path":"LOANS", "query":{"bool":{"must":[{"term": {"LOANS.LOAN_NUM": "LOAN_NUM_01"}}] }}, "inner_hits": { }} }]} }
}
// 结果
{"took": 13,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1.6739764,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_score": 1.6739764,"_source": {"RCRD_ID": "tr_rd_01","STATE": "PDOS","BUSI_CODE": "pdi"},"inner_hits": {"LOANS": {"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1.5404451,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_nested": {"field": "LOANS","offset": 0},"_score": 1.5404451,"_source": {"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "1111","LOAN_NUM": "LOAN_NUM_01","OVD_MONEY_SUM": "1111","PUB_CUST_LABEL": "张三 李四 王五"}}]}}}}]}
}
4、使用must+match实现计算得分且走倒排索引查询或模糊查询
// dsl
{"_source":["RCRD_ID", "STATE", "BUSI_CODE"], "query":{"bool":{"must":[{"match":{"STATE":"PDOS"} } , {"nested":{"path":"LOANS", "query":{"bool":{"must":[{"match": {"LOANS.LOAN_NUM": "LOAN_NUM_01"}}] }}, "inner_hits": { }} }]} }
}
//结果
{"took": 10,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1.6739764,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_score": 1.6739764,"_source": {"RCRD_ID": "tr_rd_01","STATE": "PDOS","BUSI_CODE": "pdi"},"inner_hits": {"LOANS": {"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1.5404451,"hits": [{"_index": "pdi_cust","_type": "_doc","_id": "tr_rd_01","_nested": {"field": "LOANS","offset": 0},"_score": 1.5404451,"_source": {"CUST_NUM": "CUST_NUM_01","DATA_SRC": "VALD","LOAN_BAL_SUM": "1111","LOAN_NUM": "LOAN_NUM_01","OVD_MONEY_SUM": "1111","PUB_CUST_LABEL": "张三 李四 王五"}}]}}}}]}
}
【小结】
1、对于 keyword类型的字段而言, 用 term 和 match 都是可以查询的;但对于 text 类型的分词字段而言,只能用match 才能够查询到结果;
2、根据嵌套类型查询 (filter 与 must 是属于同一个级别的查询方式,都可以作为 query->bool 的属性)
2.1、filter: 不计算评分, 查询效率高;有缓存; (推荐)
+ term: 精确匹配;
+ match: 模糊匹配, 倒排索引;
2.2、must: 要计算评分,查询效率低;无缓存;
+term: 精确匹配 , 要评分;
+match:模糊匹配, 要评分;
关于es查询dsl的filter与must,term与match的区别相关推荐
- es查询index生成时间_Elasticsearch第二谈(ES核心概念、ES简单操作、构建查询、查询结果过滤排序分页、term和match查询区别、自定义查询结果高亮)...
写博客即是为了记录自己的学习历程,也希望能够结交志同道合的朋友一起学习.文章在撰写过程中难免有疏漏和错误,欢迎指出文章的不足之处:更多内容请点进
- Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计
Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...
- 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现
点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...
- ElasticSearch进阶:一文全览各种ES查询在Java中的实现
ElasticSearch多种查询操作 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询- ...
- es查询所欲_Elasticsearch基本查询总结
Elasticsearch是一个分布式文档存储.Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构.当集群中有多个Elasticsearch节点时,存储 ...
- Elasticsearch7.17 二:mapping映射和高级语法查询DSL
文章目录 mapping映射和高级语法查询DSL 文档映射Mapping 映射类型 更改Mapping的字段类型 常用Mapping参数配置 批量操作 ES高级查询Query DSL 查询所有matc ...
- ES(三)es查询语法
一.介绍:语法GET /索引/类型/_search 查询条件,这个查询条件有两种写法, 一种是在GET的url中指定参数:这种方法比较简单,如查询所有 GET /wtyy-test/u ...
- Es检索 must与filter区别
参考文章:Es检索 must与filter区别 must和filter使用场景 先使用filter把不需要的过滤掉,例如现在有一个电子商务的网站,我要查询一个category的id为1下面的所有产品, ...
- Elasticsearch在docker下安装运行,ES查询、分词器
目录 Elasticsearch的一点背景 数据输入 数据输出 集群 集群灾备 集群管理 Docker容器中运行ElasticSearch.Kibana.cerebro ElasticSearch K ...
最新文章
- openssl 64位编译_海思hi3516dv300开发--live555交叉编译
- 【C语言练习】求两个数m和n的最大公约数(辗转相除法)
- 计算机游戏50关,YELLOW游戏全50关攻略
- mysql oracle 表空间大小_最简单的查询表空间的使用量、剩余量的方法 - Focus on Oracle、MySQL and GNU/Linux...
- 【资讯】这10大科技,将彻底改变你的生活
- 矩阵平均路径长度_Android自定义View-路径动画
- 如何在npm上发布项目
- 2012-10-29 → 2012-11-11 周总结:项目试运行(考验的时候到了),总算解决了WCF慢的问题了...
- 总结htmlfile:未知的运行时错误
- matlab GUI 设计
- 在一个公司,谁有业绩,谁就有说话权
- hfss仿真软件入门教程
- 中小企业IT建设的小看法2
- 临近毕业,查降重来了
- 神经网络与深度学习第三周-Planar data classification with one hidden layer
- diy无感无刷电机霍尔安装_永磁无刷直流电机霍尔位置传感器的安装
- vue集成汉字转拼音插件
- 人工智能产品普及的今天,软件测试人员也在自我进化
- 动态规划法解决的问题
- 框架学习:框架是什么以及框架怎么学
热门文章
- P2839 [国家集训队]middle 二分 + 主席树 在值域上建区间
- F.孤独(牛客小白月赛39)
- 【每日一题】8月4日题目精讲—购物
- CF896E Welcome home,Chtholly/[Ynoi2018]五彩斑斓的世界(并查集+第二分块)
- CF1131 G. Most Dangerous Shark (单调栈优化dp)
- 专题突破二之优先队列、st表——,Running Median,Sequence,Buy Low Sell High,数据备份,超级钢琴,ZQC的手办
- YBTOJ:运动积分(trie树)
- Loj#6247-九个太阳【单位根反演】
- Codeforces 786B Legacy (线段树优化建图)
- 2017西安交大ACM小学期 神器插座 KMP匹配