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; }