From 3e8bdccf094f6a0d898bb01832b5d9617ec55b31 Mon Sep 17 00:00:00 2001 From: zh-hanlabs <2257696485@qq.com> Date: Mon, 14 Sep 2026 21:58:10 +0800 Subject: [PATCH] fix: process orderByParams before baseSortParams to preserve sort order for _score and custom fields --- .../easyes/core/kernel/WrapperProcessor.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java index 582f25c..0876d5f 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java @@ -805,17 +805,6 @@ private static Highlight.Builder initHighlightBuilder(List highL * @param searchBuilder 查询参数建造者 */ private static void setSort(Wrapper wrapper, Map mappingColumnMap, EntityInfo entityInfo, SearchRequest.Builder searchBuilder) { - // 批量设置排序字段 - if (CollectionUtils.isNotEmpty(wrapper.baseSortParams)) { - wrapper.baseSortParams.forEach(baseSortParam -> { - // 获取es中的实际字段 有可能已经被用户自定义或者驼峰转成下划线 - String realField = Objects.isNull(baseSortParam.getSortField()) ? - null : getRealFieldAndSuffix(baseSortParam.getSortField(), mappingColumnMap, entityInfo); - SortOptions sortBuilder = getSortBuilder(realField, baseSortParam); - Optional.ofNullable(sortBuilder).ifPresent(searchBuilder::sort); - }); - } - // 设置以String形式指定的自定义排序字段及规则(此类排序通常由前端传入,满足部分用户个性化需求) if (CollectionUtils.isNotEmpty(wrapper.orderByParams)) { wrapper.orderByParams.forEach(orderByParam -> { @@ -842,6 +831,17 @@ private static void setSort(Wrapper wrapper, Map mappingColum searchBuilder.sort(x -> x.field(fieldSortBuilder.build())); }); } + // 批量设置排序字段 + if (CollectionUtils.isNotEmpty(wrapper.baseSortParams)) { + wrapper.baseSortParams.forEach(baseSortParam -> { + // 获取es中的实际字段 有可能已经被用户自定义或者驼峰转成下划线 + String realField = Objects.isNull(baseSortParam.getSortField()) ? + null : getRealFieldAndSuffix(baseSortParam.getSortField(), mappingColumnMap, entityInfo); + SortOptions sortBuilder = getSortBuilder(realField, baseSortParam); + Optional.ofNullable(sortBuilder).ifPresent(searchBuilder::sort); + }); + } + }