Elasticsearch7.8.0集成springboot条件查询

tech2025-11-16  4

添加pom.xml配置文件

<properties> <elasticsearch.version>7.8.0</elasticsearch.version> </properties> <!-- elasticsearch配置 --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>${elasticsearch.version}</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>${elasticsearch.version}</version> </dependency> <!--es工具类--> <dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>${elasticsearch.version}</version> </dependency>

application.properties配置

spring.elasticsearch.rest.uris=IP:9200

控制层(查询)

package com.tieta.listener.config; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

@Autowired private RestHighLevelClient restHighLevelClient; @CrossOrigin //跨域注解(有无不影响) @PostMapping("aiSearch") public SearchResponse esSearch(AiSearch personDetails) throws IOException { //索引名称 SearchRequest searchRequest = new SearchRequest("t_photo_ai_info"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //boolquery 多条件组合查询 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //嵌套查询 QueryBuilder gender= QueryBuilders.nestedQuery("ai_human", QueryBuilders.matchQuery("ai_human.gender",personDetails.getGender()), ScoreMode.Total); boolQueryBuilder.must(gender);/boolQueryBuilder.should(gender); //精确查询 //boolQueryBuilder.must(); //对条件进行or查询 如条件未出现 则不查不会影响 //boolQueryBuilder.should(); //普通查询 //QueryBuilder total = QueryBuilders.termQuery(" ",personDetails.getAiHumanTotal()); //boolQueryBuilder.must(total );/boolQueryBuilder.should(total ); //boolquery将多条件存入,开始查询 searchSourceBuilder.query(boolQueryBuilder); //分页调用 searchSourceBuilder.size(10); searchSourceBuilder.from(1); //根据时间排序 //searchSourceBuilder.sort("update_time", SortOrder.DESC); //根据时间范围查询 //QueryBuilder date = QueryBuilders.rangeQuery("update_time").from().to(); //boolQueryBuilder.must(date);/boolQueryBuilder.should(date); searchRequest.source(searchSourceBuilder); SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); System.out.println(search); return search; }
最新回复(0)