From 6b5dfe921cae7c8104f7fca04c9bd6848199a4e3 Mon Sep 17 00:00:00 2001 From: Yvan Date: Fri, 9 Jan 2026 17:05:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=B8=80=E9=A1=B5?= =?UTF-8?q?=20sort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/easyes/core/biz/SAPageInfo.java | 5 ++ .../easyes/core/kernel/BaseEsMapperImpl.java | 54 ++++++++++++++++--- .../easyes/core/toolkit/PageHelper.java | 3 +- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/SAPageInfo.java b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/SAPageInfo.java index daf25c85..1abd820d 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/SAPageInfo.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/SAPageInfo.java @@ -29,6 +29,11 @@ public class SAPageInfo extends PageSerializable { */ private List nextSearchAfter; + /** + * 上一页 sort + */ + private List prevSearchAfter; + @Override public String toString() { return "SAPageInfo{" + diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/BaseEsMapperImpl.java b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/BaseEsMapperImpl.java index a5852d54..96197e42 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/BaseEsMapperImpl.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/BaseEsMapperImpl.java @@ -10,7 +10,22 @@ import co.elastic.clients.elasticsearch._types.mapping.TypeMapping; import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery; import co.elastic.clients.elasticsearch._types.query_dsl.Query; import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders; -import co.elastic.clients.elasticsearch.core.*; +import co.elastic.clients.elasticsearch.core.BulkRequest; +import co.elastic.clients.elasticsearch.core.BulkResponse; +import co.elastic.clients.elasticsearch.core.CountRequest; +import co.elastic.clients.elasticsearch.core.CountResponse; +import co.elastic.clients.elasticsearch.core.DeleteByQueryRequest; +import co.elastic.clients.elasticsearch.core.DeleteByQueryResponse; +import co.elastic.clients.elasticsearch.core.DeleteRequest; +import co.elastic.clients.elasticsearch.core.DeleteResponse; +import co.elastic.clients.elasticsearch.core.IndexRequest; +import co.elastic.clients.elasticsearch.core.IndexResponse; +import co.elastic.clients.elasticsearch.core.ScrollRequest; +import co.elastic.clients.elasticsearch.core.ScrollResponse; +import co.elastic.clients.elasticsearch.core.SearchRequest; +import co.elastic.clients.elasticsearch.core.SearchResponse; +import co.elastic.clients.elasticsearch.core.UpdateRequest; +import co.elastic.clients.elasticsearch.core.UpdateResponse; import co.elastic.clients.elasticsearch.core.bulk.BulkOperation; import co.elastic.clients.elasticsearch.core.search.Hit; import co.elastic.clients.elasticsearch.core.search.HitsMetadata; @@ -34,9 +49,21 @@ import org.dromara.easyes.common.constants.BaseEsConstants; import org.dromara.easyes.common.enums.EsQueryTypeEnum; import org.dromara.easyes.common.enums.OrderTypeEnum; import org.dromara.easyes.common.join.BaseJoin; -import org.dromara.easyes.common.utils.*; +import org.dromara.easyes.common.utils.Assert; +import org.dromara.easyes.common.utils.CollectionUtils; +import org.dromara.easyes.common.utils.ExceptionUtils; +import org.dromara.easyes.common.utils.LogUtils; +import org.dromara.easyes.common.utils.NumericUtils; +import org.dromara.easyes.common.utils.ReflectionKit; +import org.dromara.easyes.common.utils.StringUtils; import org.dromara.easyes.common.utils.jackson.JsonUtils; -import org.dromara.easyes.core.biz.*; +import org.dromara.easyes.core.biz.BaseSortParam; +import org.dromara.easyes.core.biz.CreateIndexParam; +import org.dromara.easyes.core.biz.EntityInfo; +import org.dromara.easyes.core.biz.EsIndexParam; +import org.dromara.easyes.core.biz.EsPageInfo; +import org.dromara.easyes.core.biz.EsUpdateParam; +import org.dromara.easyes.core.biz.SAPageInfo; import org.dromara.easyes.core.cache.BaseCache; import org.dromara.easyes.core.cache.GlobalConfigCache; import org.dromara.easyes.core.toolkit.EntityInfoHelper; @@ -50,11 +77,25 @@ import java.io.IOException; import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; -import static org.dromara.easyes.common.constants.BaseEsConstants.*; +import static org.dromara.easyes.common.constants.BaseEsConstants.EMPTY_STR; +import static org.dromara.easyes.common.constants.BaseEsConstants.MINUS_ONE; +import static org.dromara.easyes.common.constants.BaseEsConstants.ONE; +import static org.dromara.easyes.common.constants.BaseEsConstants.REPEAT_NUM_KEY; +import static org.dromara.easyes.common.constants.BaseEsConstants.STR_SIGN; +import static org.dromara.easyes.common.constants.BaseEsConstants.ZERO; /** * 核心 所有支持方法接口实现类 @@ -270,8 +311,9 @@ public class BaseEsMapperImpl implements BaseEsMapper { .map(Hit::sort) .reduce((first, second) -> second) .orElse(null); + List prevSearchAfter = searchHits.stream().map(Hit::sort).findFirst().orElse(null); long count = parseCount(response, Objects.nonNull(wrapper.distinctField)); - return PageHelper.getSAPageInfo(dataList, count, searchAfter, nextSearchAfter, pageSize); + return PageHelper.getSAPageInfo(dataList, count, searchAfter, nextSearchAfter, prevSearchAfter, pageSize); } @Override diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/PageHelper.java b/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/PageHelper.java index 9a2a2b69..ba0625a5 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/PageHelper.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/PageHelper.java @@ -52,10 +52,11 @@ public class PageHelper { * @return 分页信息 */ public static SAPageInfo getSAPageInfo(List list, Long total, List searchAfter - , List nextSearchAfter, Integer pageSize) { + , List nextSearchAfter, List prevSearchAfter,Integer pageSize) { SAPageInfo saPageInfo = new SAPageInfo<>(); saPageInfo.setSearchAfter(searchAfter); saPageInfo.setNextSearchAfter(nextSearchAfter); + saPageInfo.setPrevSearchAfter(prevSearchAfter); saPageInfo.setList(list); saPageInfo.setTotal(total); saPageInfo.setPageSize(pageSize); -- Gitee