【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的区别相关推荐

  1. es查询index生成时间_Elasticsearch第二谈(ES核心概念、ES简单操作、构建查询、查询结果过滤排序分页、term和match查询区别、自定义查询结果高亮)...

    写博客即是为了记录自己的学习历程,也希望能够结交志同道合的朋友一起学习.文章在撰写过程中难免有疏漏和错误,欢迎指出文章的不足之处:更多内容请点进

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

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

  3. 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  4. ElasticSearch进阶:一文全览各种ES查询在Java中的实现

    ElasticSearch多种查询操作 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询- ...

  5. es查询所欲_Elasticsearch基本查询总结

    Elasticsearch是一个分布式文档存储.Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构.当集群中有多个Elasticsearch节点时,存储 ...

  6. Elasticsearch7.17 二:mapping映射和高级语法查询DSL

    文章目录 mapping映射和高级语法查询DSL 文档映射Mapping 映射类型 更改Mapping的字段类型 常用Mapping参数配置 批量操作 ES高级查询Query DSL 查询所有matc ...

  7. ES(三)es查询语法

    一.介绍:语法GET /索引/类型/_search         查询条件,这个查询条件有两种写法, 一种是在GET的url中指定参数:这种方法比较简单,如查询所有 GET /wtyy-test/u ...

  8. Es检索 must与filter区别

    参考文章:Es检索 must与filter区别 must和filter使用场景 先使用filter把不需要的过滤掉,例如现在有一个电子商务的网站,我要查询一个category的id为1下面的所有产品, ...

  9. Elasticsearch在docker下安装运行,ES查询、分词器

    目录 Elasticsearch的一点背景 数据输入 数据输出 集群 集群灾备 集群管理 Docker容器中运行ElasticSearch.Kibana.cerebro ElasticSearch K ...

最新文章

  1. openssl 64位编译_海思hi3516dv300开发--live555交叉编译
  2. 【C语言练习】求两个数m和n的最大公约数(辗转相除法)
  3. 计算机游戏50关,YELLOW游戏全50关攻略
  4. mysql oracle 表空间大小_最简单的查询表空间的使用量、剩余量的方法 - Focus on Oracle、MySQL and GNU/Linux...
  5. 【资讯】这10大科技,将彻底改变你的生活
  6. 矩阵平均路径长度_Android自定义View-路径动画
  7. 如何在npm上发布项目
  8. 2012-10-29 → 2012-11-11 周总结:项目试运行(考验的时候到了),总算解决了WCF慢的问题了...
  9. 总结htmlfile:未知的运行时错误
  10. matlab GUI 设计
  11. 在一个公司,谁有业绩,谁就有说话权
  12. hfss仿真软件入门教程
  13. 中小企业IT建设的小看法2
  14. 临近毕业,查降重来了
  15. 神经网络与深度学习第三周-Planar data classification with one hidden layer
  16. diy无感无刷电机霍尔安装_永磁无刷直流电机霍尔位置传感器的安装
  17. vue集成汉字转拼音插件
  18. 人工智能产品普及的今天,软件测试人员也在自我进化
  19. 动态规划法解决的问题
  20. 框架学习:框架是什么以及框架怎么学

热门文章

  1. P2839 [国家集训队]middle 二分 + 主席树 在值域上建区间
  2. F.孤独(牛客小白月赛39)
  3. 【每日一题】8月4日题目精讲—购物
  4. CF896E Welcome home,Chtholly/[Ynoi2018]五彩斑斓的世界(并查集+第二分块)
  5. CF1131 G. Most Dangerous Shark (单调栈优化dp)
  6. 专题突破二之优先队列、st表——,Running Median,Sequence,Buy Low Sell High,数据备份,超级钢琴,ZQC的手办
  7. YBTOJ:运动积分(trie树)
  8. Loj#6247-九个太阳【单位根反演】
  9. Codeforces 786B Legacy (线段树优化建图)
  10. 2017西安交大ACM小学期 神器插座 KMP匹配