小白学习-ElasticSearch教程 -文档查询之bool查询

Posted 做猪呢,最重要的是开森啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习-ElasticSearch教程 -文档查询之bool查询相关的知识,希望对你有一定的参考价值。

  • 本系列笔记结合HTTP请求(使用postman调用,源文件见GitHub)和ElasticsearchRestTemplate进行调用学习
  • ElasticsearchRestTemplate封装了RestHighLevelClient,有些场景还得用RestHighLevelClient来操作
  • 版本说明:使用的SpringBoot-2.3.5,对应的ElasticSearch-7.6.2;所以还是可以用RestHighLevelClient
  • ElasticSearch-7.15后就弃用了RestHighLevelClient,可见官网文档,之后的版本可以开启客户端兼容来维持正常使用

1. 多条件组合布尔查询 - bool:

像match、term查询都是只有一个条件,像多个条件查询时,就可以永bool组合查询,可以有4中情形:

  • must:子句(查询)必须出现在匹配的文档中,并将有助于得分
  • filter:子句(查询)必须出现在匹配的文档中,但不做评分
  • should:子句(查询)应出现在匹配文档中, 匹配 should 条件的最小数目可通过设置minimum_should_match 参数
  • must_not:子句(查询)不能出现在匹配的文档中,同样不做评分

【数据准备】:添加两个文档,name为keyword类型,address为text类型

  • “name”: “Tom Wilson”,“address”: “China BJ”
  • “name”: “Tom Wilson”,“address”: “China SZ”
1.1. bool.must:

must里面可以有多个条件,条件匹配可以是match或term,文档必须对多个字段都匹配,类似and

【HTTP请求】:只匹配name会有两个文档,但还要满足"SZ"的匹配,就只能搜索到一文档
·

1.2. bool.should:

should里面可以有多个条件,条件匹配可以是match或term,支持minimum_should_match参数,类似or

【HTTP请求】:minimum_should_match为2,文档要两个条件都满足,所以只有一个文档
·

1.3. bool.filter:

filter里面可以有多个条件,条件匹配可以是match或term,filter对结果是不作评分的,所以score为0

【HTTP请求】:
·
【题外】:使用constant_score 的filter,会对结果进行评分,score为1.0
·

1.4. bool的API:

使用boolQuery来构建QueryBuilder

以上是关于小白学习-ElasticSearch教程 -文档查询之bool查询的主要内容,如果未能解决你的问题,请参考以下文章

小白学习C++ 教程八在C++指针传递引用和Const关键字

小白想学习go语言,哪位有教程?

小白学习C++ 教程二C++基础语法注释和变量

这才叫新手教程,2019献给所有小白的学习攻略!

小白学习C++ 教程一Vscode配置C++环境

大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!