1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

ElasticSearch之BoolQueryBuilder使用

使用BoolQueryBuilder查询ElasticSearch

你好,我是本际云服务器推荐网的小编小本本。在ElasticSearch的查询中,我们可以使用各种方式,其中一个比较好用的查询条件构建器是BoolQueryBuilder。下面将介绍如何使用这个构建器。

ElasticSearch之BoolQueryBuilder使用

引入所需的jar包

在使用ElasticSearch7x版本的POM文件中,我们需要引入以下jar包来完美搭配使用:

  • org.elasticsearch.client:elasticsearch-rest-high-level-client:7.10.2
  • org.elasticsearch:elasticsearch:7.10.2
  • org.apache.logging.log4j:log4j-core:2.18.0
  • org.apache.logging.log4j:log4j-api:2.18.0
  • org.elasticsearch.client:elasticsearch-rest-client:7.10.2
  • com.google.code.gson:gson:2.9.0

使用示例

接下来,我们要展示如何使用BoolQueryBuilder查询ElasticSearch。

首先,我们需要在EsClient配置类中进行Yml文件配置。

elasticsearch:
  spring:
    elasticsearch:
      jest:
        proxy:
          host: 192.168.X.XX
          port: 9200

然后,我们介绍几个查询方式示例:

  • 精确查找:boolQueryBuilder.must(QueryBuilders.termQuery(“demo”,”demo”));
  • 模糊匹配:boolQueryBuilder.must(QueryBuilders.wildcardQuery(“name”,String.format(“*%s*”,””)));
  • 范围查询:boolQueryBuilder.must(QueryBuilders.rangeQuery(“startTime”).gte(startTime));

接下来,我们就是根据时间范围进行分页查询。

SearchHits hits = elasticsearchService.getEsResultByQueryBuilder(boolQueryBuilder,"indexName",                pageIndex,pageSize);
List list = new ArrayList();
for (SearchHit hit : hits.getHits()) {
    Map map = hit.getSourceAsMap();
    if (map != null) {
        list.add(map);
    }
}

需要注意的是,在使用完BoolQueryBuilder构建查询条件后,我们需要通过SourceBuilder将其转换为ElasticSearch查询语句时,要加上分页参数,否则查询结果会默认只返回10条数据。

使用BoolQueryBuilder构建查询条件的方式有很多,以上仅是一些示例。通过这种方式,我们可以摆脱传统方式烦琐的写ElasticSearch查询语句的烦恼,代码也变得简洁,可塑性也更高。

以上就是本次关于BoolQueryBuilder使用的分享,谢谢阅读。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6584.html