1.修复在混合查询模式下,用户手count api无效的缺陷。
2.修复分页参数中hasNextPage不正确的缺陷。
3.修复仅设置socketTimeOut不设置requestTimeOut等参数时socketTimeOut参数无效的缺陷。
本期主要是一些小缺陷修复和体验优化,后面两个版本将有重大更新
This commit is contained in:
xpc1024 2022-12-16 18:07:26 +08:00
parent 074be3c2fd
commit af06907bef
14 changed files with 48 additions and 46 deletions

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId> <artifactId>easy-es-parent</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easy-es-parent</artifactId> <artifactId>easy-es-parent</artifactId>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<version>1.1.0</version> <version>1.1.1</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -94,7 +94,8 @@ public class EsAutoConfiguration {
Integer connectTimeOut = easyEsConfigProperties.getConnectTimeout(); Integer connectTimeOut = easyEsConfigProperties.getConnectTimeout();
Integer socketTimeOut = easyEsConfigProperties.getSocketTimeout(); Integer socketTimeOut = easyEsConfigProperties.getSocketTimeout();
Integer connectionRequestTimeOut = easyEsConfigProperties.getConnectionRequestTimeout(); Integer connectionRequestTimeOut = easyEsConfigProperties.getConnectionRequestTimeout();
boolean needSetRequestConfig = Objects.nonNull(connectTimeOut) || Objects.nonNull(connectionRequestTimeOut); boolean needSetRequestConfig = Objects.nonNull(connectTimeOut) || Objects.nonNull(socketTimeOut) ||
Objects.nonNull(connectionRequestTimeOut);
if (needSetRequestConfig) { if (needSetRequestConfig) {
builder.setRequestConfigCallback(requestConfigBuilder -> { builder.setRequestConfigCallback(requestConfigBuilder -> {
Optional.ofNullable(connectTimeOut).ifPresent(requestConfigBuilder::setConnectTimeout); Optional.ofNullable(connectTimeOut).ifPresent(requestConfigBuilder::setConnectTimeout);

View File

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId> <artifactId>easy-es-parent</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId> <artifactId>easy-es-parent</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>

View File

@ -14,6 +14,8 @@ import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.easyes.annotation.rely.AnnotationConstants.DEFAULT_MAX_RESULT_WINDOW;
/** /**
* 实体类信息 * 实体类信息
* <p> * <p>
@ -45,7 +47,7 @@ public class EntityInfo {
/** /**
* 最大返回数 * 最大返回数
*/ */
private Integer maxResultWindow; private Integer maxResultWindow = DEFAULT_MAX_RESULT_WINDOW;
/** /**
* 表映射结果集 * 表映射结果集
*/ */

View File

@ -72,7 +72,7 @@ public class EsPageInfo<T> extends PageSerializable<T> {
/** /**
* 所有导航页号 * 所有导航页号
*/ */
private int[] navigatepageNums; private int[] navigatePageNums;
/** /**
* 导航条上的第一页 * 导航条上的第一页
*/ */
@ -108,12 +108,6 @@ public class EsPageInfo<T> extends PageSerializable<T> {
this.endRow = list.size() > 0 ? list.size() - 1 : 0; this.endRow = list.size() > 0 ? list.size() - 1 : 0;
this.navigatePages = navigatePages; this.navigatePages = navigatePages;
//计算导航页
calcNavigatepageNums();
//计算前后页第一页最后一页
calcPage();
//判断页面边界
judgePageBoudary();
} }
public static <T> EsPageInfo<T> of(List<T> list) { public static <T> EsPageInfo<T> of(List<T> list) {
@ -127,15 +121,15 @@ public class EsPageInfo<T> extends PageSerializable<T> {
/** /**
* 计算导航页 * 计算导航页
*/ */
private void calcNavigatepageNums() { public void calcNavigatePageNums() {
//当总页数小于或等于导航页码数时 //当总页数小于或等于导航页码数时
if (pages <= navigatePages) { if (pages <= navigatePages) {
navigatepageNums = new int[pages]; navigatePageNums = new int[pages];
for (int i = 0; i < pages; i++) { for (int i = 0; i < pages; i++) {
navigatepageNums[i] = i + 1; navigatePageNums[i] = i + 1;
} }
} else { //当总页数大于导航页码数时 } else { //当总页数大于导航页码数时
navigatepageNums = new int[navigatePages]; navigatePageNums = new int[navigatePages];
int startNum = pageNum - navigatePages / 2; int startNum = pageNum - navigatePages / 2;
int endNum = pageNum + navigatePages / 2; int endNum = pageNum + navigatePages / 2;
@ -143,18 +137,18 @@ public class EsPageInfo<T> extends PageSerializable<T> {
startNum = 1; startNum = 1;
//(最前navigatePages页 //(最前navigatePages页
for (int i = 0; i < navigatePages; i++) { for (int i = 0; i < navigatePages; i++) {
navigatepageNums[i] = startNum++; navigatePageNums[i] = startNum++;
} }
} else if (endNum > pages) { } else if (endNum > pages) {
endNum = pages; endNum = pages;
//最后navigatePages页 //最后navigatePages页
for (int i = navigatePages - 1; i >= 0; i--) { for (int i = navigatePages - 1; i >= 0; i--) {
navigatepageNums[i] = endNum--; navigatePageNums[i] = endNum--;
} }
} else { } else {
//所有中间页 //所有中间页
for (int i = 0; i < navigatePages; i++) { for (int i = 0; i < navigatePages; i++) {
navigatepageNums[i] = startNum++; navigatePageNums[i] = startNum++;
} }
} }
} }
@ -163,10 +157,10 @@ public class EsPageInfo<T> extends PageSerializable<T> {
/** /**
* 计算前后页第一页最后一页 * 计算前后页第一页最后一页
*/ */
private void calcPage() { public void calcPage() {
if (navigatepageNums != null && navigatepageNums.length > 0) { if (navigatePageNums != null && navigatePageNums.length > 0) {
navigateFirstPage = navigatepageNums[0]; navigateFirstPage = navigatePageNums[0];
navigateLastPage = navigatepageNums[navigatepageNums.length - 1]; navigateLastPage = navigatePageNums[navigatePageNums.length - 1];
if (pageNum > 1) { if (pageNum > 1) {
prePage = pageNum - 1; prePage = pageNum - 1;
} }
@ -179,10 +173,9 @@ public class EsPageInfo<T> extends PageSerializable<T> {
/** /**
* 判定页面边界 * 判定页面边界
*/ */
private void judgePageBoudary() { public void judgePageBoundary() {
isFirstPage = pageNum == 1; isFirstPage = pageNum == 1;
isLastPage = pageNum == pages || pages == 0; isLastPage = pageNum == pages || pages == 0;
;
hasPreviousPage = pageNum > 1; hasPreviousPage = pageNum > 1;
hasNextPage = pageNum < pages; hasNextPage = pageNum < pages;
} }
@ -203,7 +196,7 @@ public class EsPageInfo<T> extends PageSerializable<T> {
", hasPreviousPage=" + hasPreviousPage + ", hasPreviousPage=" + hasPreviousPage +
", hasNextPage=" + hasNextPage + ", hasNextPage=" + hasNextPage +
", navigatePages=" + navigatePages + ", navigatePages=" + navigatePages +
", navigatepageNums=" + Arrays.toString(navigatepageNums) + ", navigatepageNums=" + Arrays.toString(navigatePageNums) +
", navigateFirstPage=" + navigateFirstPage + ", navigateFirstPage=" + navigateFirstPage +
", navigateLastPage=" + navigateLastPage + ", navigateLastPage=" + navigateLastPage +
", total=" + total + ", total=" + total +

View File

@ -38,6 +38,7 @@ import org.elasticsearch.client.indices.PutMappingRequest;
import org.elasticsearch.common.text.Text; import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryRequest; import org.elasticsearch.index.reindex.DeleteByQueryRequest;
@ -248,9 +249,11 @@ public class BaseEsMapperImpl<T> implements BaseEsMapper<T> {
} else { } else {
// 不去重,直接count获取,效率更高 // 不去重,直接count获取,效率更高
CountRequest countRequest = new CountRequest(getIndexNames(wrapper.indexNames)); CountRequest countRequest = new CountRequest(getIndexNames(wrapper.indexNames));
BoolQueryBuilder boolQueryBuilder = WrapperProcessor.initBoolQueryBuilder(wrapper.baseEsParamList, QueryBuilder queryBuilder = Optional.ofNullable(wrapper.searchSourceBuilder)
wrapper.enableMust2Filter, entityClass); .map(SearchSourceBuilder::query)
countRequest.query(boolQueryBuilder); .orElseGet(() -> WrapperProcessor.initBoolQueryBuilder(wrapper.baseEsParamList,
wrapper.enableMust2Filter, entityClass));
countRequest.query(queryBuilder);
CountResponse count; CountResponse count;
try { try {
printCountDSL(countRequest); printCountDSL(countRequest);
@ -764,16 +767,13 @@ public class BaseEsMapperImpl<T> implements BaseEsMapper<T> {
SearchRequest searchRequest = new SearchRequest(getIndexNames(wrapper.indexNames)); SearchRequest searchRequest = new SearchRequest(getIndexNames(wrapper.indexNames));
// 用户在wrapper中指定的混合查询条件优先级最高 // 用户在wrapper中指定的混合查询条件优先级最高
SearchSourceBuilder searchSourceBuilder; SearchSourceBuilder searchSourceBuilder = Optional.ofNullable(wrapper.searchSourceBuilder)
if (Objects.isNull(wrapper.searchSourceBuilder)) { .map(builder -> {
searchSourceBuilder = WrapperProcessor.buildSearchSourceBuilder(wrapper, entityClass);
} else {
searchSourceBuilder = wrapper.searchSourceBuilder;
// 兼容混合查询时用户在分页中自定义的分页参数 // 兼容混合查询时用户在分页中自定义的分页参数
Optional.ofNullable(wrapper.from).ifPresent(searchSourceBuilder::from); Optional.ofNullable(wrapper.from).ifPresent(builder::from);
Optional.ofNullable(wrapper.size).ifPresent(searchSourceBuilder::size); Optional.ofNullable(wrapper.size).ifPresent(builder::size);
} return builder;
}).orElseGet(() -> WrapperProcessor.buildSearchSourceBuilder(wrapper, entityClass));
searchRequest.source(searchSourceBuilder); searchRequest.source(searchSourceBuilder);
Optional.ofNullable(searchAfter).ifPresent(searchSourceBuilder::searchAfter); Optional.ofNullable(searchAfter).ifPresent(searchSourceBuilder::searchAfter);
printDSL(searchRequest); printDSL(searchRequest);

View File

@ -30,6 +30,12 @@ public class PageHelper {
pageInfo.setPageNum(pageNum); pageInfo.setPageNum(pageNum);
pageInfo.setPageSize(pageSize); pageInfo.setPageSize(pageSize);
pageInfo.setPages((int) (total % pageSize > 0 ? total / pageSize + 1 : total / pageSize)); pageInfo.setPages((int) (total % pageSize > 0 ? total / pageSize + 1 : total / pageSize));
// 计算导航页
pageInfo.calcNavigatePageNums();
// 计算前后页,第一页,最后一页
pageInfo.calcPage();
// 判断页面边界
pageInfo.judgePageBoundary();
return pageInfo; return pageInfo;
} }

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId> <artifactId>easy-es-parent</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>

View File

@ -6,7 +6,7 @@
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId> <artifactId>easy-es-parent</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
<name>easy-es-parent</name> <name>easy-es-parent</name>
<description>easy use for elastic search</description> <description>easy use for elastic search</description>

View File

@ -9,7 +9,7 @@
<parent> <parent>
<artifactId>easy-es</artifactId> <artifactId>easy-es</artifactId>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<version>1.1.0</version> <version>1.1.1</version>
</parent> </parent>
<properties> <properties>
@ -21,7 +21,7 @@
<dependency> <dependency>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId> <artifactId>easy-es-boot-starter</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -7,7 +7,7 @@
<parent> <parent>
<artifactId>easy-es</artifactId> <artifactId>easy-es</artifactId>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<version>1.1.0</version> <version>1.1.1</version>
</parent> </parent>
<artifactId>easy-es-test</artifactId> <artifactId>easy-es-test</artifactId>

View File

@ -6,7 +6,7 @@
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es</artifactId> <artifactId>easy-es</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
<name>easy-es</name> <name>easy-es</name>
<description>easy use for elastic search</description> <description>easy use for elastic search</description>