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 daf25c859ecd9bb093b50fe57a3e6ee513b95c20..1abd820deffd0c43009e68abd924148443880e75 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 a5852d54f82abd7321be514bab94a7380815262f..96197e422b1ec83dd3220e8001132c1ae3fdad68 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 9a2a2b691af69a04fa7ab53467ca2c456ec984a3..ba0625a58a6ffeaca5a2e69766b546a98d3f5e85 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);