# ElasticSearch之BoolQueryBuilder使用

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:19:00.000Z
> 分类: 其他
> 原文链接: http://117.50.162.249:3000/yun/articles/1759

---

# ElasticSearch之BoolQueryBuilder使用

> 来源: https://www.ucloud.cn/yun/129159.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:19

ElasticSearch之BoolQueryBuilder使用

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

一

**ES查询方式**

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

二

#### **引入pom文件**

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

```
<dependency>   <groupId>org.elasticsearch.clientgroupId>   <artifactId>elasticsearch-rest-high-level-clientartifactId>   <version>7.10.2version>   <exclusions>       <exclusion>           <artifactId>elasticsearchartifactId>           <groupId>org.elasticsearchgroupId>       exclusion>       <exclusion>           <groupId>org.elasticsearch.clientgroupId>           <artifactId>elasticsearch-rest-clientartifactId>       exclusion>   exclusions>dependency><dependency>   <groupId>org.elasticsearchgroupId>   <artifactId>elasticsearchartifactId>   <version>7.10.2version>   dependency><dependency>   <groupId>org.apache.logging.log4jgroupId>   <artifactId>log4j-coreartifactId>   <version>2.18.0version>dependency><dependency>   <groupId>org.apache.logging.log4jgroupId>   <artifactId>log4j-apiartifactId>   <version>2.18.0version>dependency><dependency>   <groupId>org.elasticsearch.clientgroupId>   <artifactId>elasticsearch-rest-clientartifactId>   <version>7.10.2version>dependency><dependency>   <groupId>com.google.code.gsongroupId>   <artifactId>gsonartifactId>   <version>2.9.0version>dependency>
```

三

**使用示例**

#### 

Es client配置类：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129159/images/129159_000.png)

Yml文件配置：

```
# elasticsearchspring: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)

接下来上一段我根据时间范围分页查询的代码：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129159/images/129159_001.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129159/images/129159_002.png)

**这里需要注意一个点：**在使用BoolQueryBuilder构建完查询条件，通过SourceBuilder转换成es查询语句时需要加上分页参数，不然查询结果默认只返回10条。

**BoolQueryBuilder构建查询条件的方式还是很多的**，这里就不一一举例了。这种查询方式摆脱了传统写es查询语句烦恼，**代码简洁，可塑性更高**。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129159/images/129159_003.png)

## 本文作者：段席超(上海新炬王翦团队）

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

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129159/images/129159_004.png)