暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ElasticSearch之BoolQueryBuilder使用

IT那活儿 2022-11-24
5797

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


ES查询方式

ElasticSearch使用的频率是越来越高,其中关于es查询的方式也是各式各样,最近发现了一种比较好用的es查询条件buider:BoolQueryBuilder接下来分享一下使用过程。


引入pom文件

我使用的是elasticSearch7x,在pom文件中引入以下jar包,完美搭配。

<!-- RestHighLevelClient操作ES 高亮查询 -->
<dependency>
   <groupId>org.elasticsearch.client</groupId>
   <artifactId>elasticsearch-rest-high-level-client</artifactId>
   <version>7.10.2</version>
   <exclusions>
       <exclusion>
           <artifactId>elasticsearch</artifactId>
           <groupId>org.elasticsearch</groupId>
       </exclusion>
       <exclusion>
           <groupId>org.elasticsearch.client</groupId>
           <artifactId>elasticsearch-rest-client</artifactId>
       </exclusion>
   </exclusions>
</dependency>


<!-- elasticsearch -->
<dependency>
   <groupId>org.elasticsearch</groupId>
   <artifactId>elasticsearch</artifactId>
   <version>7.10.2</version>
   <!--<exclusions>
       <exclusion>
           <groupId>org.apache.logging.log4j</groupId>
           <artifactId>log4j-api</artifactId>
       </exclusion>
   </exclusions>-->

</dependency>


<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-core</artifactId>
   <version>2.18.0</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-api</artifactId>
   <version>2.18.0</version>
</dependency>



<!-- elasticsearch rest -->
<dependency>
   <groupId>org.elasticsearch.client</groupId>
   <artifactId>elasticsearch-rest-client</artifactId>
   <version>7.10.2</version>
</dependency>

<!-- Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库 -->
<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.9.0</version>
</dependency>


使用示例

Es client配置类:
Yml文件配置:
# elasticsearch
spring:
elasticsearch.:
   jest:
     proxy:
       host: 192.168.X.XX
       port: 9200

配置完成之后,我们接下来正式使用BoolQueryBuilder,使用之前先介绍几个查询方法:
  • 精确查找

    boolQueryBuilder.must(QueryBuilders.termQuery("demo","demo"));

  • 模糊匹配

    boolQueryBuilder.must(QueryBuilders.wildcardQuery("name", String.format("*%s*", "")));

  • 范围查询boolQueryBuilder.must(QueryBuilders.rangeQuery("startTime").gte(startTime)
接下来上一段我根据时间范围分页查询的代码:
这里需要注意一个点:在使用BoolQueryBuilder构建完查询条件,通过SourceBuilder转换成es查询语句时需要加上分页参数,不然查询结果默认只返回10条。
BoolQueryBuilder构建查询条件的方式还是很多的,这里就不一一举例了。这种查询方式摆脱了传统写es查询语句烦恼,代码简洁,可塑性更高


本文作者:段席超(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论