From 46d9afaffaf0dea1d0b7d66d04b2fab280239a64 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Mon, 1 Dec 2025 15:38:35 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E4=BB=B7=E6=A0=BC=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=A4=84=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ElasticSearchServiceImpl.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ElasticSearchServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ElasticSearchServiceImpl.java index b53f491c5..8d88f7e7b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ElasticSearchServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ElasticSearchServiceImpl.java @@ -184,13 +184,23 @@ public class ElasticSearchServiceImpl implements IElasticSearchService { public Page search(IndexSearchDTO searchDTO) throws IOException { // 构建 bool 查询 BoolQuery.Builder boolQueryBuilder = new BoolQuery.Builder(); + // 添加 price 范围查询 - if (ObjectUtils.isNotEmpty(searchDTO.getMinPrice()) && ObjectUtils.isNotEmpty(searchDTO.getMaxPrice())) { + if (ObjectUtils.isNotEmpty(searchDTO.getMinPrice())) { RangeQuery.Builder rangeBuilder = new RangeQuery.Builder(); - rangeBuilder.number(NumberRangeQuery.of(n -> n.field("prodPrice").gte(Double.valueOf(searchDTO.getMinPrice())) - .lte(Double.valueOf(searchDTO.getMaxPrice())))); + NumberRangeQuery.Builder numberRangeBuilder = new NumberRangeQuery.Builder(); + numberRangeBuilder.field("prodPrice"); + if (ObjectUtils.isNotEmpty(searchDTO.getMinPrice())) { + numberRangeBuilder.gte(Double.valueOf(searchDTO.getMinPrice())); + } + if (ObjectUtils.isNotEmpty(searchDTO.getMaxPrice())) { + numberRangeBuilder.lte(Double.valueOf(searchDTO.getMaxPrice())); + } + rangeBuilder.number(numberRangeBuilder.build()); boolQueryBuilder.filter(rangeBuilder.build()._toQuery()); } + + // 处理具体的查询内容逻辑 if (StringUtils.isNotBlank(searchDTO.getSearch())) { String searchTerm = searchDTO.getSearch().trim(); // 创建专门的搜索 bool query