ES检索条件:
其他条件
AND
((字段A >=2023-01-01 AND 字段A<=2023-12-31)
OR
(字段B>=2023-01-01 AND 字段B <=2023-12-31))
springboot集成ES,如何实现多字段条件查询
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
MarkHan_ 2023-07-20 15:42关注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.QueryBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @Service public class YourSearchService { private final RestHighLevelClient elasticsearchClient; @Autowired public YourSearchService(RestHighLevelClient elasticsearchClient) { this.elasticsearchClient = elasticsearchClient; } public SearchResponse searchWithMultipleConditions() throws IOException { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate startDate = LocalDate.parse("2023-01-01", formatter); LocalDate endDate = LocalDate.parse("2023-12-31", formatter); // 构建多字段查询条件 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery() .must(QueryBuilders.rangeQuery("字段A").gte(startDate).lte(endDate)) .should(QueryBuilders.rangeQuery("字段B").gte(startDate).lte(endDate)); // 构建查询请求 SearchRequest searchRequest = new SearchRequest("your_index_name"); searchRequest.source(new SearchSourceBuilder().query(boolQueryBuilder)); // 执行查询并返回结果 return elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT); } }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报