初识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查询的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch系列-01初识以及安装elasticSearch

第1篇: 初识Elasticsearch

ElasticSearch篇--ElasticSearch从初识到安装和应用

Elasticsearch --- 01 java , elasticsearch, kibana 的下载安装,es初识

Elasticsearch系列---初识mapping

ES(ElasticSearch)和Solr的初识