From b7f46c30bf1f2f2d7cb2dca56f965b196f346b5f Mon Sep 17 00:00:00 2001 From: lym <2499445495@qq.co> Date: Wed, 9 Aug 2023 15:22:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=94=AF=E6=8C=81=E5=AF=B9=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E7=B4=A2=E5=BC=95=E6=8C=87=E5=AE=9A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- easy-es-annotation/pom.xml | 6 ++++++ .../java/org/dromara/easyes/annotation/IndexName.java | 8 ++++++++ .../dromara/easyes/annotation/rely}/RefreshPolicy.java | 8 ++++++-- .../main/java/org/dromara/easyes/core/biz/EntityInfo.java | 5 +++++ .../java/org/dromara/easyes/core/config/GlobalConfig.java | 4 ++-- .../org/dromara/easyes/core/core/BaseEsMapperImpl.java | 4 ++-- .../org/dromara/easyes/core/toolkit/EntityInfoHelper.java | 6 ++++++ .../java/org/dromara/easyes/test/entity/Document.java | 6 ++++-- 8 files changed, 39 insertions(+), 8 deletions(-) rename {easy-es-common/src/main/java/org/dromara/easyes/common/enums => easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely}/RefreshPolicy.java (72%) diff --git a/easy-es-annotation/pom.xml b/easy-es-annotation/pom.xml index a2ab8645..a4acc306 100644 --- a/easy-es-annotation/pom.xml +++ b/easy-es-annotation/pom.xml @@ -18,4 +18,10 @@ 8 + + + org.projectlombok + lombok + + \ No newline at end of file diff --git a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/IndexName.java b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/IndexName.java index 5414b7f9..761adfaa 100644 --- a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/IndexName.java +++ b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/IndexName.java @@ -1,6 +1,7 @@ package org.dromara.easyes.annotation; import org.dromara.easyes.annotation.rely.DefaultChildClass; +import org.dromara.easyes.annotation.rely.RefreshPolicy; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -81,4 +82,11 @@ public @interface IndexName { * @return CRUD作用的路由 */ String routing() default ""; + + /** + * 数据刷新策略 + * @return + */ + RefreshPolicy refreshPolicy() default RefreshPolicy.GLOBAL; + } diff --git a/easy-es-common/src/main/java/org/dromara/easyes/common/enums/RefreshPolicy.java b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/RefreshPolicy.java similarity index 72% rename from easy-es-common/src/main/java/org/dromara/easyes/common/enums/RefreshPolicy.java rename to easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/RefreshPolicy.java index 6ed5680f..82956478 100644 --- a/easy-es-common/src/main/java/org/dromara/easyes/common/enums/RefreshPolicy.java +++ b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/RefreshPolicy.java @@ -1,4 +1,4 @@ -package org.dromara.easyes.common.enums; +package org.dromara.easyes.annotation.rely; import lombok.AllArgsConstructor; import lombok.Getter; @@ -11,7 +11,11 @@ import lombok.Getter; @AllArgsConstructor public enum RefreshPolicy { /** - * 默认不刷新 + * 使用全局设置: easy-es.global-config.db-config.refresh-policy + */ + GLOBAL(""), + /** + * 不立即刷新 (es默认的数据刷新策略) */ NONE("false"), /** diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/EntityInfo.java b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/EntityInfo.java index 129c52a1..16be3c15 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/EntityInfo.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/EntityInfo.java @@ -2,6 +2,7 @@ package org.dromara.easyes.core.biz; import org.dromara.easyes.annotation.rely.IdType; import org.dromara.easyes.annotation.rely.JoinField; +import org.dromara.easyes.annotation.rely.RefreshPolicy; import org.dromara.easyes.common.constants.BaseEsConstants; import com.alibaba.fastjson.PropertyNamingStrategy; import com.alibaba.fastjson.parser.deserializer.ExtraProcessor; @@ -177,6 +178,10 @@ public class EntityInfo { */ private final Map, List> classSimplePropertyPreFilterMap = new HashMap<>(); + /** + * 数据刷新策略 + */ + private RefreshPolicy refreshPolicy; /** * 获取需要进行查询的字段列表 * diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/config/GlobalConfig.java b/easy-es-core/src/main/java/org/dromara/easyes/core/config/GlobalConfig.java index 9d3f1388..c99f4d0c 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/config/GlobalConfig.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/config/GlobalConfig.java @@ -5,7 +5,7 @@ import lombok.Data; import org.dromara.easyes.annotation.rely.FieldStrategy; import org.dromara.easyes.annotation.rely.IdType; import org.dromara.easyes.common.enums.ProcessIndexStrategyEnum; -import org.dromara.easyes.common.enums.RefreshPolicy; +import org.dromara.easyes.annotation.rely.RefreshPolicy; import org.springframework.boot.context.properties.NestedConfigurationProperty; import static org.dromara.easyes.common.constants.BaseEsConstants.EMPTY_STR; @@ -79,7 +79,7 @@ public class GlobalConfig { */ private boolean enableTrackTotalHits = true; /** - * data refresh policy 数据刷新策略,默认为NONE + * data refresh policy 数据刷新策略,es默认的数据刷新策略为NONE */ private RefreshPolicy refreshPolicy = RefreshPolicy.NONE; /** diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/core/BaseEsMapperImpl.java b/easy-es-core/src/main/java/org/dromara/easyes/core/core/BaseEsMapperImpl.java index 6ebf53b2..d49c29c9 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/core/BaseEsMapperImpl.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/core/BaseEsMapperImpl.java @@ -13,7 +13,7 @@ import org.dromara.easyes.annotation.rely.IdType; import org.dromara.easyes.common.constants.BaseEsConstants; import org.dromara.easyes.common.enums.EsQueryTypeEnum; import org.dromara.easyes.common.enums.MethodEnum; -import org.dromara.easyes.common.enums.RefreshPolicy; +import org.dromara.easyes.annotation.rely.RefreshPolicy; import org.dromara.easyes.common.utils.*; import org.dromara.easyes.core.biz.*; import org.dromara.easyes.core.cache.BaseCache; @@ -1495,7 +1495,7 @@ public class BaseEsMapperImpl implements BaseEsMapper { * @return 刷新策略 */ private String getRefreshPolicy() { - return GlobalConfigCache.getGlobalConfig().getDbConfig().getRefreshPolicy().getValue(); + return EntityInfoHelper.getEntityInfo(entityClass).getRefreshPolicy().getValue(); } /** diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java b/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java index 5eb8ee9d..40d78269 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java @@ -8,6 +8,7 @@ import org.dromara.easyes.annotation.*; import org.dromara.easyes.annotation.rely.DefaultNestedClass; import org.dromara.easyes.annotation.rely.FieldType; import org.dromara.easyes.annotation.rely.IdType; +import org.dromara.easyes.annotation.rely.RefreshPolicy; import org.dromara.easyes.common.utils.*; import org.dromara.easyes.core.biz.EntityFieldInfo; import org.dromara.easyes.core.biz.EntityInfo; @@ -658,6 +659,11 @@ public class EntityInfoHelper { entityInfo.setReplicasNum(table.replicasNum()); entityInfo.setChild(table.child()); entityInfo.setChildClass(table.childClass()); + RefreshPolicy refreshPolicy = table.refreshPolicy(); + if (RefreshPolicy.GLOBAL.equals(refreshPolicy)) { + refreshPolicy = dbConfig.getRefreshPolicy(); + } + entityInfo.setRefreshPolicy(refreshPolicy); } String targetIndexName = indexName; diff --git a/easy-es-test/src/main/java/org/dromara/easyes/test/entity/Document.java b/easy-es-test/src/main/java/org/dromara/easyes/test/entity/Document.java index a129c64d..f7246b02 100644 --- a/easy-es-test/src/main/java/org/dromara/easyes/test/entity/Document.java +++ b/easy-es-test/src/main/java/org/dromara/easyes/test/entity/Document.java @@ -15,7 +15,9 @@ import java.util.List; **/ @Data @Accessors(chain = true) -@IndexName(value = "easyes_document", shardsNum = 3, replicasNum = 2, keepGlobalPrefix = true, childClass = Comment.class, routing = "testRouting") +@IndexName(value = "easyes_document", shardsNum = 3, replicasNum = 2, + keepGlobalPrefix = true, childClass = Comment.class, routing = "testRouting", + refreshPolicy = RefreshPolicy.IMMEDIATE) public class Document { /** * es中的唯一id,字段名随便起,我这里演示用esId,你也可以用id(推荐),bizId等. @@ -129,7 +131,7 @@ public class Document { */ @MultiIndexField(mainIndexField = @IndexField(fieldType = FieldType.KEYWORD), otherIndexFields = {@InnerIndexField(suffix = "zh", fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART), - @InnerIndexField(suffix = "pinyin", fieldType = FieldType.TEXT, analyzer = "pinyin")}) + @InnerIndexField(suffix = "pinyin", fieldType = FieldType.TEXT, analyzer = Analyzer.PINYIN)}) private String multiField; /** * 英文名