@@ -51,30 +51,30 @@ public class EsQueryTypeUtil {
}
// 封装查询参数
- if (Objects.equals(queryType, TERM_QUERY.getType())) {
+ if (Objects.equals(queryType, EsQueryTypeEnum.TERM_QUERY.getType())) {
// 封装精确查询参数
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(field, value).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, termQueryBuilder);
- } else if (Objects.equals(queryType, TERMS_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.TERMS_QUERY.getType())) {
// 此处兼容由or转入shouldList的in参数
Collection> values = Objects.isNull(value) ? model.getValues() : (Collection>) value;
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(field, values).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, termsQueryBuilder);
- } else if (Objects.equals(queryType, MATCH_PHASE.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.MATCH_PHASE.getType())) {
// 封装模糊分词查询参数(分词必须按原关键词顺序)
MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery(field, value).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, matchPhraseQueryBuilder);
- } else if (Objects.equals(queryType, MATCH_PHRASE_PREFIX.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.MATCH_PHRASE_PREFIX.getType())) {
MatchPhrasePrefixQueryBuilder matchPhrasePrefixQueryBuilder = QueryBuilders.matchPhrasePrefixQuery(field, value)
.maxExpansions((Integer) model.getExt()).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, matchPhrasePrefixQueryBuilder);
- } else if (Objects.equals(queryType, PREFIX_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.PREFIX_QUERY.getType())) {
PrefixQueryBuilder prefixQueryBuilder = QueryBuilders.prefixQuery(field, value.toString()).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, prefixQueryBuilder);
- } else if (Objects.equals(queryType, QUERY_STRING_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.QUERY_STRING_QUERY.getType())) {
QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery(value.toString()).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, queryStringQueryBuilder);
- } else if (Objects.equals(queryType, MATCH_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.MATCH_QUERY.getType())) {
// 封装模糊分词查询参数(可无序)
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(field, value).boost(boost);
if (StringUtils.isBlank(path)) {
@@ -82,7 +82,7 @@ public class EsQueryTypeUtil {
} else {
// 嵌套类型
if (JoinTypeEnum.NESTED.equals(model.getExt())) {
- matchQueryBuilder = QueryBuilders.matchQuery(path + PATH_FIELD_JOIN + field, value).boost(boost);
+ matchQueryBuilder = QueryBuilders.matchQuery(path + BaseEsConstants.PATH_FIELD_JOIN + field, value).boost(boost);
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery(model.getPath(), matchQueryBuilder, (ScoreMode) model.getScoreMode());
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, nestedQueryBuilder);
} else if (JoinTypeEnum.HAS_CHILD.equals(model.getExt())) {
@@ -93,31 +93,31 @@ public class EsQueryTypeUtil {
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, hasParentQueryBuilder);
}
}
- } else if (Objects.equals(queryType, RANGE_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.RANGE_QUERY.getType())) {
// 封装范围查询参数
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(field).boost(boost);
- if (Objects.equals(originalAttachType, GT.getType())) {
+ if (Objects.equals(originalAttachType, EsAttachTypeEnum.GT.getType())) {
rangeQueryBuilder.gt(value);
- } else if (Objects.equals(originalAttachType, LT.getType())) {
+ } else if (Objects.equals(originalAttachType, EsAttachTypeEnum.LT.getType())) {
rangeQueryBuilder.lt(value);
- } else if (Objects.equals(originalAttachType, GE.getType())) {
+ } else if (Objects.equals(originalAttachType, EsAttachTypeEnum.GE.getType())) {
rangeQueryBuilder.gte(value);
- } else if (Objects.equals(originalAttachType, LE.getType())) {
+ } else if (Objects.equals(originalAttachType, EsAttachTypeEnum.LE.getType())) {
rangeQueryBuilder.lte(value);
}
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, rangeQueryBuilder);
- } else if (Objects.equals(queryType, EXISTS_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.EXISTS_QUERY.getType())) {
// 封装是否存在查询参数
ExistsQueryBuilder existsQueryBuilder = QueryBuilders.existsQuery(field).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, existsQueryBuilder);
- } else if (Objects.equals(queryType, WILDCARD_QUERY.getType())) {
+ } else if (Objects.equals(queryType, EsQueryTypeEnum.WILDCARD_QUERY.getType())) {
String query;
- if (Objects.equals(attachType, LIKE_LEFT.getType())) {
- query = WILDCARD_SIGN + value;
- } else if (Objects.equals(attachType, LIKE_RIGHT.getType())) {
- query = value + WILDCARD_SIGN;
+ if (Objects.equals(attachType, EsAttachTypeEnum.LIKE_LEFT.getType())) {
+ query = BaseEsConstants.WILDCARD_SIGN + value;
+ } else if (Objects.equals(attachType, EsAttachTypeEnum.LIKE_RIGHT.getType())) {
+ query = value + BaseEsConstants.WILDCARD_SIGN;
} else {
- query = WILDCARD_SIGN + value + WILDCARD_SIGN;
+ query = BaseEsConstants.WILDCARD_SIGN + value + BaseEsConstants.WILDCARD_SIGN;
}
WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery(field, query).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, wildcardQueryBuilder);
@@ -140,12 +140,12 @@ public class EsQueryTypeUtil {
*/
public static void addQueryByType(BoolQueryBuilder boolQueryBuilder, Integer queryType, Integer attachType, boolean enableMust2Filter,
List
@@ -50,11 +49,11 @@ public class LockUtils {
IndexUtils.createEmptyIndex(client, LOCK_INDEX);
}
- if (maxRetry <= ZERO) {
+ if (maxRetry <= BaseEsConstants.ZERO) {
return Boolean.FALSE;
}
- if (getCount(client, idValue) > ZERO) {
+ if (getCount(client, idValue) > BaseEsConstants.ZERO) {
try {
Thread.sleep(WAIT_SECONDS / maxRetry);
} catch (InterruptedException e) {
@@ -76,7 +75,7 @@ public class LockUtils {
private static boolean createLock(RestHighLevelClient client, String idValue) {
IndexRequest indexRequest = new IndexRequest(LOCK_INDEX);
indexRequest.id(idValue);
- indexRequest.source(DISTRIBUTED_LOCK_TIP_JSON, XContentType.JSON);
+ indexRequest.source(BaseEsConstants.DISTRIBUTED_LOCK_TIP_JSON, XContentType.JSON);
IndexResponse response;
try {
response = client.index(indexRequest, RequestOptions.DEFAULT);
@@ -98,7 +97,7 @@ public class LockUtils {
public synchronized static boolean release(RestHighLevelClient client, String idValue, Integer maxRetry) {
DeleteRequest deleteRequest = new DeleteRequest(LOCK_INDEX);
deleteRequest.id(idValue);
- if (maxRetry <= ZERO) {
+ if (maxRetry <= BaseEsConstants.ZERO) {
return Boolean.FALSE;
}
@@ -150,7 +149,7 @@ public class LockUtils {
response = client.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
- return ONE;
+ return BaseEsConstants.ONE;
}
return (int) response.getHits().getTotalHits().value;
}
diff --git a/easy-es-core/src/main/java/cn/easyes/core/toolkit/PageHelper.java b/easy-es-core/src/main/java/cn/easyes/core/toolkit/PageHelper.java
index 7ed0f235..e885c57f 100644
--- a/easy-es-core/src/main/java/cn/easyes/core/toolkit/PageHelper.java
+++ b/easy-es-core/src/main/java/cn/easyes/core/toolkit/PageHelper.java
@@ -1,6 +1,6 @@
package cn.easyes.core.toolkit;
-import cn.easyes.core.common.PageInfo;
+import cn.easyes.core.biz.PageInfo;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git a/easy-es-extension/pom.xml b/easy-es-extension/pom.xml
index 21ec4160..aa96d6d8 100644
--- a/easy-es-extension/pom.xml
+++ b/easy-es-extension/pom.xml
@@ -7,7 +7,7 @@
diff --git a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/InterceptorChain.java b/easy-es-extension/src/main/java/cn/easyes/extension/context/InterceptorChain.java
similarity index 96%
rename from easy-es-extension/src/main/java/cn/easyes/extension/plugins/InterceptorChain.java
rename to easy-es-extension/src/main/java/cn/easyes/extension/context/InterceptorChain.java
index 202770f3..ce7ca0d3 100644
--- a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/InterceptorChain.java
+++ b/easy-es-extension/src/main/java/cn/easyes/extension/context/InterceptorChain.java
@@ -1,4 +1,4 @@
-package cn.easyes.extension.plugins;
+package cn.easyes.extension.context;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/InterceptorChainHolder.java b/easy-es-extension/src/main/java/cn/easyes/extension/context/InterceptorChainHolder.java
similarity index 95%
rename from easy-es-extension/src/main/java/cn/easyes/extension/plugins/InterceptorChainHolder.java
rename to easy-es-extension/src/main/java/cn/easyes/extension/context/InterceptorChainHolder.java
index 5d88ffaa..6056e233 100644
--- a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/InterceptorChainHolder.java
+++ b/easy-es-extension/src/main/java/cn/easyes/extension/context/InterceptorChainHolder.java
@@ -1,4 +1,4 @@
-package cn.easyes.extension.plugins;
+package cn.easyes.extension.context;
/**
* interceptorChain上下文
diff --git a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/Invocation.java b/easy-es-extension/src/main/java/cn/easyes/extension/context/Invocation.java
similarity index 95%
rename from easy-es-extension/src/main/java/cn/easyes/extension/plugins/Invocation.java
rename to easy-es-extension/src/main/java/cn/easyes/extension/context/Invocation.java
index 8bebff44..3b87cfdd 100644
--- a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/Invocation.java
+++ b/easy-es-extension/src/main/java/cn/easyes/extension/context/Invocation.java
@@ -1,4 +1,4 @@
-package cn.easyes.extension.plugins;
+package cn.easyes.extension.context;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
diff --git a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/Plugin.java b/easy-es-extension/src/main/java/cn/easyes/extension/plugins/Plugin.java
index 6a2ddec5..e7744415 100644
--- a/easy-es-extension/src/main/java/cn/easyes/extension/plugins/Plugin.java
+++ b/easy-es-extension/src/main/java/cn/easyes/extension/plugins/Plugin.java
@@ -1,9 +1,11 @@
package cn.easyes.extension.plugins;
-import cn.easyes.extension.anno.Intercepts;
-import cn.easyes.extension.anno.Signature;
-import cn.easyes.extension.utils.ExceptionUtil;
+import cn.easyes.annotation.anno.Intercepts;
+import cn.easyes.annotation.anno.Signature;
+import cn.easyes.common.utils.ExceptionUtil;
+import cn.easyes.extension.context.Interceptor;
+import cn.easyes.extension.context.Invocation;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
diff --git a/easy-es-parent/pom.xml b/easy-es-parent/pom.xml
index e048c601..9d3e8ed3 100644
--- a/easy-es-parent/pom.xml
+++ b/easy-es-parent/pom.xml
@@ -6,7 +6,7 @@
@@ -76,9 +74,4 @@ public class Document {
* 文档点赞数
*/
private Integer starNum;
- /**
- * 嵌套类型 注意,务必像下面示例一样指定类型为nested及其nested class,否则会导致框架无法正常运行
- */
- @TableField(fieldType = FieldType.NESTED, nestedClass = User.class)
- private List
- * 统一逻辑删除拦截器 demo
- *
- * 统一查询拦截器 demo
- *
- * Copyright © 2022 xpc1024 All Rights Reserved
- **/
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestEasyEsApplication.class)
-public class SearchTest {
- @Resource
- private DocumentMapper documentMapper;
- //测试的总条数
- private static final int TOTAL_COUNT = 30;
- String indexName = Document.class.getSimpleName().toLowerCase();
-
- /**
- * 测试数据
- */
- @Test
- public void testInsertBatch() {
- List
+ * Copyright © 2021 xpc1024 All Rights Reserved
+ **/
+@Data
+@Accessors(chain = true)
+@TableName(shardsNum = 3, replicasNum = 2, keepGlobalPrefix = true)
+public class Document {
+ /**
+ * es中的唯一id,如果你想自定义es中的id为你提供的id,比如MySQL中的id,请将注解中的type指定为customize或直接在全局配置文件中指定,如此id便支持任意数据类型)
+ */
+ @TableId(type = IdType.CUSTOMIZE)
+ private String id;
+ /**
+ * 文档标题,不指定类型默认被创建为keyword类型,可进行精确查询
+ */
+ private String title;
+ /**
+ * 文档内容,指定了类型及存储/查询分词器
+ */
+ @TableField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
+ private String content;
+ /**
+ * 作者 加@TableField注解,并指明strategy = FieldStrategy.NOT_EMPTY 表示更新的时候的策略为 创建者不为空字符串时才更新
+ */
+ @TableField(strategy = FieldStrategy.NOT_EMPTY)
+ private String creator;
+ /**
+ * 创建时间
+ */
+ @TableField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
+ private String gmtCreate;
+ /**
+ * es中实际不存在的字段,但模型中加了,为了不和es映射,可以在此类型字段上加上 注解@TableField,并指明exist=false
+ */
+ @TableField(exist = false)
+ private String notExistsField;
+ /**
+ * 地理位置经纬度坐标 例如: "40.13933715136454,116.63441990026217"
+ */
+ @TableField(fieldType = FieldType.GEO_POINT)
+ private String location;
+ /**
+ * 图形(例如圆心,矩形)
+ */
+ @TableField(fieldType = FieldType.GEO_SHAPE)
+ private String geoLocation;
+ /**
+ * 自定义字段名称
+ */
+ @TableField(value = "wu-la", fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_SMART)
+ private String customField;
+
+ /**
+ * 高亮返回值被映射的字段
+ */
+ @HighLightMappingField("content")
+ private String highlightContent;
+ /**
+ * 文档点赞数
+ */
+ private Integer starNum;
+ /**
+ * 嵌套类型 注意,务必像下面示例一样指定类型为nested及其nested class,否则会导致框架无法正常运行
+ */
+ @TableField(fieldType = FieldType.NESTED, nestedClass = User.class)
+ private List
+ * Copyright © 2021 xpc1024 All Rights Reserved
+ **/
+public interface DocumentMapper extends BaseEsMapper