新增功能:
前序迭代已支持了一部分父子类型的查询功能,此版本对父子类型功能闭环,至此,父子类型功能已完整支持,新增功能包括:
1.新增对父子类型索引自动托管及手动API维护的支持
2.新增父子类型通过父id查询的功能

项目调整:
1.从0.9.30版本起调整项目Maven中央仓库中的groupId由io.github.xpc1024调整为cn.easy-es,已发布的老版本不受影响.
2.项目所有包名由com.xpc调整为cn.easy-es打头
3.新增common,annotation,test子模块,并调整了原项目结构,让模块之间耦合进一步降低,提升可读性,更易于维护.为即将迎来的性能测试,压力测试等埋下伏笔.

体验优化:
1.enableMust2filter配置生效范围增加对in,notIn,between等类型查询的支持
2.进一步简化高亮功能的使用门槛,代价是牺牲了少量灵活性,Easy至上!
3.针对自动托管索引的平滑模式,提供了"拉弓还有回头箭"功能,在索引迁移因各种原因迁移失败后,自动清理失败的索引,原索引不受任何影响.

缺陷修复:
1.修复multiMatchQuery查询参数被重复封装2次的缺陷.
This commit is contained in:
xpc1024 2022-06-01 16:56:17 +08:00
parent b4de669b8c
commit 39b362aef3
124 changed files with 637 additions and 611 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>0.9.21</version> <version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>
@ -18,4 +18,10 @@
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
</properties> </properties>
<dependencies>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-common</artifactId>
</dependency>
</dependencies>
</project> </project>

View File

@ -1,4 +1,4 @@
package cn.easyes.core.anno; package cn.easyes.annotation.anno;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
@ -16,9 +16,9 @@ import java.lang.annotation.Target;
@TableField(exist = false) @TableField(exist = false)
public @interface HighLightMappingField { public @interface HighLightMappingField {
/** /**
* 高亮字段对应源数据库表字段 * 指定的高亮字段名称
* *
* @return 高亮返回字段名 * @return 高亮字段名
*/ */
String value(); String value();
} }

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.anno; package cn.easyes.annotation.anno;
import java.lang.annotation.*; import java.lang.annotation.*;

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.anno; package cn.easyes.annotation.anno;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@ -1,9 +1,9 @@
package cn.easyes.core.anno; package cn.easyes.annotation.anno;
import cn.easyes.core.enums.Analyzer; import cn.easyes.annotation.assist.DefaultNestedClass;
import cn.easyes.core.enums.FieldStrategy; import cn.easyes.common.enums.Analyzer;
import cn.easyes.core.enums.FieldType; import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.core.params.DefaultNestedClass; import cn.easyes.common.enums.FieldType;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@ -1,6 +1,6 @@
package cn.easyes.core.anno; package cn.easyes.annotation.anno;
import cn.easyes.core.enums.IdType; import cn.easyes.common.enums.IdType;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@ -1,6 +1,6 @@
package cn.easyes.core.anno; package cn.easyes.annotation.anno;
import cn.easyes.core.constants.BaseEsConstants; import cn.easyes.common.constants.BaseEsConstants;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.annotation.assist;
/** /**
* 默认嵌套类 * 默认嵌套类

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>0.9.21</version> <version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@ -21,16 +21,6 @@
<dependency> <dependency>
<groupId>cn.easy-es</groupId> <groupId>cn.easy-es</groupId>
<artifactId>easy-es-core</artifactId> <artifactId>easy-es-core</artifactId>
<version>0.9.21</version>
</dependency>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-extension</artifactId>
<version>0.9.21</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -1,4 +1,4 @@
package cn.easyes.autoconfig.config; package cn.easyes.starter.config;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.core.config.GlobalConfig;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,7 @@
package cn.easyes.autoconfig.config; package cn.easyes.starter.config;
import cn.easyes.core.toolkit.ExceptionUtils; import cn.easyes.common.utils.ExceptionUtils;
import cn.easyes.core.toolkit.StringUtils; import cn.easyes.common.utils.StringUtils;
import org.apache.http.HttpHost; import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope; import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.auth.UsernamePasswordCredentials;
@ -20,8 +20,8 @@ import org.springframework.context.annotation.Configuration;
import java.util.*; import java.util.*;
import static cn.easyes.core.constants.BaseEsConstants.COLON; import static cn.easyes.common.constants.BaseEsConstants.COLON;
import static cn.easyes.core.constants.BaseEsConstants.DEFAULT_SCHEMA; import static cn.easyes.common.constants.BaseEsConstants.DEFAULT_SCHEMA;
/** /**
* es自动配置 * es自动配置

View File

@ -1,10 +1,10 @@
package cn.easyes.autoconfig.factory; package cn.easyes.starter.factory;
import cn.easyes.autoconfig.config.EasyEsConfigProperties; import cn.easyes.starter.config.EasyEsConfigProperties;
import cn.easyes.autoconfig.service.AutoProcessIndexService; import cn.easyes.starter.service.AutoProcessIndexService;
import cn.easyes.core.enums.ProcessIndexStrategyEnum; import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.toolkit.ExceptionUtils; import cn.easyes.common.utils.ExceptionUtils;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;

View File

@ -1,7 +1,7 @@
package cn.easyes.autoconfig.register; package cn.easyes.starter.register;
import cn.easyes.common.utils.ArrayUtils;
import cn.easyes.core.conditions.interfaces.BaseEsMapper; import cn.easyes.core.conditions.interfaces.BaseEsMapper;
import cn.easyes.core.toolkit.ArrayUtils;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.config.BeanDefinitionHolder;

View File

@ -1,7 +1,6 @@
package cn.easyes.autoconfig.annotation; package cn.easyes.starter.register;
import cn.easyes.autoconfig.register.MapperScannerRegister;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import java.lang.annotation.*; import java.lang.annotation.*;

View File

@ -1,19 +1,19 @@
package cn.easyes.autoconfig.register; package cn.easyes.starter.register;
import cn.easyes.autoconfig.config.EasyEsConfigProperties; import cn.easyes.annotation.anno.Intercepts;
import cn.easyes.autoconfig.factory.IndexStrategyFactory; import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.autoconfig.service.AutoProcessIndexService; import cn.easyes.common.utils.LogUtils;
import cn.easyes.common.utils.TypeUtils;
import cn.easyes.core.cache.BaseCache; import cn.easyes.core.cache.BaseCache;
import cn.easyes.core.cache.GlobalConfigCache; import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.proxy.EsMapperProxy; import cn.easyes.core.proxy.EsMapperProxy;
import cn.easyes.core.toolkit.LogUtils; import cn.easyes.extension.context.Interceptor;
import cn.easyes.core.toolkit.TypeUtils; import cn.easyes.extension.context.InterceptorChain;
import cn.easyes.extension.anno.Intercepts; import cn.easyes.extension.context.InterceptorChainHolder;
import cn.easyes.extension.plugins.Interceptor; import cn.easyes.starter.config.EasyEsConfigProperties;
import cn.easyes.extension.plugins.InterceptorChain; import cn.easyes.starter.factory.IndexStrategyFactory;
import cn.easyes.extension.plugins.InterceptorChainHolder; import cn.easyes.starter.service.AutoProcessIndexService;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -1,7 +1,6 @@
package cn.easyes.autoconfig.register; package cn.easyes.starter.register;
import cn.easyes.autoconfig.annotation.EsMapperScan; import cn.easyes.common.utils.LogUtils;
import cn.easyes.core.toolkit.LogUtils;
import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.EnvironmentAware; import org.springframework.context.EnvironmentAware;
import org.springframework.context.ResourceLoaderAware; import org.springframework.context.ResourceLoaderAware;
@ -18,7 +17,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.easyes.core.constants.BaseEsConstants.ENABLE_PREFIX; import static cn.easyes.common.constants.BaseEsConstants.ENABLE_PREFIX;
/** /**
* 注册bean * 注册bean
@ -28,6 +27,7 @@ import static cn.easyes.core.constants.BaseEsConstants.ENABLE_PREFIX;
public class MapperScannerRegister implements ImportBeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware { public class MapperScannerRegister implements ImportBeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware {
private ResourceLoader resourceLoader; private ResourceLoader resourceLoader;
private Environment environment; private Environment environment;
@Override @Override
public void setResourceLoader(ResourceLoader resourceLoader) { public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader; this.resourceLoader = resourceLoader;

View File

@ -1,4 +1,4 @@
package cn.easyes.autoconfig.service; package cn.easyes.starter.service;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;

View File

@ -1,13 +1,13 @@
package cn.easyes.autoconfig.service.impl; package cn.easyes.starter.service.impl;
import cn.easyes.autoconfig.service.AutoProcessIndexService; import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.common.EntityInfo; import cn.easyes.common.utils.LogUtils;
import cn.easyes.core.enums.ProcessIndexStrategyEnum; import cn.easyes.core.biz.CreateIndexParam;
import cn.easyes.core.params.CreateIndexParam; import cn.easyes.core.biz.EntityInfo;
import cn.easyes.core.params.EsIndexInfo; import cn.easyes.core.biz.EsIndexInfo;
import cn.easyes.core.toolkit.EntityInfoHelper; import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.toolkit.IndexUtils; import cn.easyes.core.toolkit.IndexUtils;
import cn.easyes.core.toolkit.LogUtils; import cn.easyes.starter.service.AutoProcessIndexService;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

View File

@ -1,20 +1,20 @@
package cn.easyes.autoconfig.service.impl; package cn.easyes.starter.service.impl;
import cn.easyes.autoconfig.service.AutoProcessIndexService; import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.common.EntityInfo; import cn.easyes.common.utils.LogUtils;
import cn.easyes.core.enums.ProcessIndexStrategyEnum; import cn.easyes.core.biz.CreateIndexParam;
import cn.easyes.core.params.CreateIndexParam; import cn.easyes.core.biz.EntityInfo;
import cn.easyes.core.params.EsIndexInfo; import cn.easyes.core.biz.EsIndexInfo;
import cn.easyes.core.toolkit.EntityInfoHelper; import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.toolkit.IndexUtils; import cn.easyes.core.toolkit.IndexUtils;
import cn.easyes.core.toolkit.LogUtils; import cn.easyes.starter.service.AutoProcessIndexService;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import static cn.easyes.core.constants.BaseEsConstants.S1_SUFFIX; import static cn.easyes.common.constants.BaseEsConstants.S1_SUFFIX;
import static cn.easyes.core.constants.BaseEsConstants.SO_SUFFIX; import static cn.easyes.common.constants.BaseEsConstants.SO_SUFFIX;
/** /**
* 自动平滑托管索引实现类,本框架默认模式,过程零停机,数据会自动转移至新索引 * 自动平滑托管索引实现类,本框架默认模式,过程零停机,数据会自动转移至新索引

View File

@ -1,6 +1,6 @@
# Auto Configure # Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.easyes.autoconfig.config.EsAutoConfiguration,\ cn.easyes.starter.config.EsAutoConfiguration,\
cn.easyes.autoconfig.factory.IndexStrategyFactory,\ cn.easyes.starter.factory.IndexStrategyFactory,\
cn.easyes.autoconfig.service.impl.AutoProcessIndexSmoothlyServiceImpl,\ cn.easyes.starter.service.impl.AutoProcessIndexSmoothlyServiceImpl,\
cn.easyes.autoconfig.service.impl.AutoProcessIndexNotSmoothlyServiceImpl cn.easyes.starter.service.impl.AutoProcessIndexNotSmoothlyServiceImpl

43
easy-es-common/pom.xml Normal file
View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId>
<version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath>
</parent>
<artifactId>easy-es-common</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,4 +1,4 @@
package cn.easyes.core.constants; package cn.easyes.common.constants;
/** /**
* EasyEs的常量 * EasyEs的常量

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
/** /**
* 聚合枚举 * 聚合枚举

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
/** /**
* 字段策略枚举 * 字段策略枚举

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
/** /**
* 主键类型枚举 * 主键类型枚举

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
/** /**
* 嵌套及父子类型枚举 * 嵌套及父子类型枚举

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums; package cn.easyes.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.exception; package cn.easyes.common.exception;
/** /**
* EasyEs异常类 * EasyEs异常类

View File

@ -1,4 +1,4 @@
package cn.easyes.core.conditions.interfaces; package cn.easyes.common.params;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
/** /**
* array工具类 * array工具类

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import java.util.Collection; import java.util.Collection;

View File

@ -1,5 +1,5 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.utils; package cn.easyes.common.utils;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.UndeclaredThrowableException; import java.lang.reflect.UndeclaredThrowableException;

View File

@ -1,7 +1,7 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import cn.easyes.core.exception.EasyEsException; import cn.easyes.common.exception.EasyEsException;
/** /**
* 异常辅助工具类 * 异常辅助工具类

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import lombok.AccessLevel; import lombok.AccessLevel;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import java.util.Objects; import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.Field; import java.lang.reflect.Field;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
/** /**
* 字符串工具类 * 字符串工具类

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit; package cn.easyes.common.utils;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type; import java.lang.reflect.Type;

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>0.9.21</version> <version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>
@ -20,20 +20,8 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>cn.easy-es</groupId>
<artifactId>lombok</artifactId> <artifactId>easy-es-extension</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -1,6 +1,6 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import cn.easyes.core.enums.AggregationTypeEnum; import cn.easyes.common.enums.AggregationTypeEnum;
import lombok.Data; import lombok.Data;
/** /**

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;

View File

@ -1,11 +1,11 @@
package cn.easyes.core.common; package cn.easyes.core.biz;
import cn.easyes.core.anno.TableField; import cn.easyes.annotation.anno.TableField;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.enums.Analyzer; import cn.easyes.common.enums.Analyzer;
import cn.easyes.core.enums.FieldStrategy; import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.common.enums.FieldType;
import com.alibaba.fastjson.serializer.NameFilter; import com.alibaba.fastjson.serializer.NameFilter;
import cn.easyes.core.enums.FieldType;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Data; import lombok.Data;
import lombok.Getter; import lombok.Getter;

View File

@ -1,10 +1,10 @@
package cn.easyes.core.common; package cn.easyes.core.biz;
import cn.easyes.core.constants.BaseEsConstants; import cn.easyes.common.constants.BaseEsConstants;
import com.alibaba.fastjson.PropertyNamingStrategy; import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.parser.deserializer.ExtraProcessor; import com.alibaba.fastjson.parser.deserializer.ExtraProcessor;
import com.alibaba.fastjson.serializer.SerializeFilter; import com.alibaba.fastjson.serializer.SerializeFilter;
import cn.easyes.core.enums.IdType; import cn.easyes.common.enums.IdType;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;

View File

@ -1,6 +1,6 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import cn.easyes.core.enums.Analyzer; import cn.easyes.common.enums.Analyzer;
import lombok.Data; import lombok.Data;
/** /**

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.common; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.common; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.common; package cn.easyes.core.biz;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params; package cn.easyes.core.biz;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@ -1,10 +1,10 @@
package cn.easyes.core.cache; package cn.easyes.core.cache;
import cn.easyes.core.conditions.BaseEsMapperImpl; import cn.easyes.core.conditions.BaseEsMapperImpl;
import cn.easyes.core.constants.BaseEsConstants; import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.core.toolkit.CollectionUtils; import cn.easyes.common.utils.CollectionUtils;
import cn.easyes.core.toolkit.EntityInfoHelper; import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.toolkit.ExceptionUtils; import cn.easyes.common.utils.ExceptionUtils;
import cn.easyes.core.toolkit.FieldUtils; import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;

View File

@ -1,7 +1,7 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.biz.OrderByParam;
import cn.easyes.core.conditions.interfaces.*; import cn.easyes.core.conditions.interfaces.*;
import cn.easyes.core.common.OrderByParam;
import org.apache.lucene.search.join.ScoreMode; import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.geo.ShapeRelation;

View File

@ -1,6 +1,6 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.conditions.interfaces.SFunction; import cn.easyes.common.params.SFunction;
/** /**
* 抽象Lambda表达式父类 * 抽象Lambda表达式父类

View File

@ -1,6 +1,6 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.conditions.interfaces.SFunction; import cn.easyes.common.params.SFunction;
/** /**
* 抽象Lambda表达式父类 * 抽象Lambda表达式父类

View File

@ -1,10 +1,9 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.common.OrderByParam; import cn.easyes.common.enums.*;
import cn.easyes.common.utils.*;
import cn.easyes.core.biz.*;
import cn.easyes.core.conditions.interfaces.*; import cn.easyes.core.conditions.interfaces.*;
import cn.easyes.core.enums.*;
import cn.easyes.core.params.*;
import cn.easyes.core.toolkit.*;
import org.apache.lucene.search.join.ScoreMode; import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.geo.ShapeRelation;
@ -18,10 +17,10 @@ import java.util.*;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
import java.util.function.Function; import java.util.function.Function;
import static cn.easyes.core.enums.BaseEsParamTypeEnum.*; import static cn.easyes.common.enums.BaseEsParamTypeEnum.*;
import static cn.easyes.core.enums.EsAttachTypeEnum.*; import static cn.easyes.common.enums.EsAttachTypeEnum.*;
import static cn.easyes.core.enums.EsQueryTypeEnum.*; import static cn.easyes.common.enums.EsQueryTypeEnum.*;
import static cn.easyes.core.enums.JoinTypeEnum.*; import static cn.easyes.common.enums.JoinTypeEnum.*;
/** /**
* 抽象Lambda表达式父类 * 抽象Lambda表达式父类

View File

@ -1,18 +1,17 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.common.enums.IdType;
import cn.easyes.common.utils.*;
import cn.easyes.core.biz.*;
import cn.easyes.core.cache.BaseCache; import cn.easyes.core.cache.BaseCache;
import cn.easyes.core.cache.GlobalConfigCache; import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.common.EntityFieldInfo;
import cn.easyes.core.common.EntityInfo;
import cn.easyes.core.common.PageInfo;
import cn.easyes.core.conditions.interfaces.BaseEsMapper; import cn.easyes.core.conditions.interfaces.BaseEsMapper;
import cn.easyes.core.constants.BaseEsConstants; import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.enums.FieldStrategy; import cn.easyes.core.toolkit.FieldUtils;
import cn.easyes.core.enums.IdType; import cn.easyes.core.toolkit.IndexUtils;
import cn.easyes.core.params.CreateIndexParam; import cn.easyes.core.toolkit.PageHelper;
import cn.easyes.core.params.EsIndexParam;
import cn.easyes.core.params.EsUpdateParam;
import cn.easyes.core.toolkit.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeFilter; import com.alibaba.fastjson.serializer.SerializeFilter;

View File

@ -1,11 +1,11 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.common.enums.Analyzer;
import cn.easyes.common.enums.FieldType;
import cn.easyes.common.params.SFunction;
import cn.easyes.common.utils.StringUtils;
import cn.easyes.core.biz.EsIndexParam;
import cn.easyes.core.conditions.interfaces.Index; import cn.easyes.core.conditions.interfaces.Index;
import cn.easyes.core.conditions.interfaces.SFunction;
import cn.easyes.core.enums.Analyzer;
import cn.easyes.core.enums.FieldType;
import cn.easyes.core.params.EsIndexParam;
import cn.easyes.core.toolkit.StringUtils;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;

View File

@ -1,12 +1,8 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.common.EntityFieldInfo; import cn.easyes.common.params.SFunction;
import cn.easyes.core.biz.*;
import cn.easyes.core.conditions.interfaces.Query; import cn.easyes.core.conditions.interfaces.Query;
import cn.easyes.core.conditions.interfaces.SFunction;
import cn.easyes.core.params.AggregationParam;
import cn.easyes.core.params.BaseEsParam;
import cn.easyes.core.params.HighLightParam;
import cn.easyes.core.params.SortParam;
import cn.easyes.core.toolkit.EntityInfoHelper; import cn.easyes.core.toolkit.EntityInfoHelper;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;

View File

@ -1,9 +1,9 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.conditions.interfaces.SFunction; import cn.easyes.common.params.SFunction;
import cn.easyes.core.biz.BaseEsParam;
import cn.easyes.core.biz.EsUpdateParam;
import cn.easyes.core.conditions.interfaces.Update; import cn.easyes.core.conditions.interfaces.Update;
import cn.easyes.core.params.BaseEsParam;
import cn.easyes.core.params.EsUpdateParam;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import java.util.ArrayList; import java.util.ArrayList;
@ -19,6 +19,7 @@ public class LambdaEsUpdateWrapper<T> extends AbstractLambdaUpdateWrapper<T, Lam
implements Update<LambdaEsUpdateWrapper<T>, SFunction<T, ?>> { implements Update<LambdaEsUpdateWrapper<T>, SFunction<T, ?>> {
List<EsUpdateParam> updateParamList; List<EsUpdateParam> updateParamList;
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */

View File

@ -10,6 +10,7 @@ import org.elasticsearch.action.search.SearchRequest;
public abstract class Wrapper<T> { public abstract class Wrapper<T> {
/** /**
* 获取查询条件 待优化 * 获取查询条件 待优化
*
* @return 查询条件 * @return 查询条件
*/ */
protected abstract SearchRequest getSearchRequest(); protected abstract SearchRequest getSearchRequest();

View File

@ -1,14 +1,16 @@
package cn.easyes.core.conditions; package cn.easyes.core.conditions;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.common.enums.AggregationTypeEnum;
import cn.easyes.common.utils.ArrayUtils;
import cn.easyes.common.utils.CollectionUtils;
import cn.easyes.common.utils.MyOptional;
import cn.easyes.common.utils.StringUtils;
import cn.easyes.core.biz.*;
import cn.easyes.core.cache.GlobalConfigCache; import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.common.EntityInfo; import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.enums.AggregationTypeEnum; import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.params.AggregationParam; import cn.easyes.core.toolkit.EsQueryTypeUtil;
import cn.easyes.core.params.BaseEsParam; import cn.easyes.core.toolkit.FieldUtils;
import cn.easyes.core.params.GeoParam;
import cn.easyes.core.params.OrCount;
import cn.easyes.core.toolkit.*;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.elasticsearch.index.query.*; import org.elasticsearch.index.query.*;
@ -22,9 +24,9 @@ import org.elasticsearch.search.sort.SortOrder;
import java.util.*; import java.util.*;
import static cn.easyes.core.constants.BaseEsConstants.*; import static cn.easyes.common.constants.BaseEsConstants.*;
import static cn.easyes.core.enums.BaseEsParamTypeEnum.*; import static cn.easyes.common.enums.BaseEsParamTypeEnum.*;
import static cn.easyes.core.enums.EsAttachTypeEnum.*; import static cn.easyes.common.enums.EsAttachTypeEnum.*;
/** /**
* 核心 wrpeer处理类 * 核心 wrpeer处理类

View File

@ -3,7 +3,7 @@ package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.conditions.LambdaEsIndexWrapper; import cn.easyes.core.conditions.LambdaEsIndexWrapper;
import cn.easyes.core.conditions.LambdaEsQueryWrapper; import cn.easyes.core.conditions.LambdaEsQueryWrapper;
import cn.easyes.core.conditions.LambdaEsUpdateWrapper; import cn.easyes.core.conditions.LambdaEsUpdateWrapper;
import cn.easyes.core.common.PageInfo; import cn.easyes.core.biz.PageInfo;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest; import org.elasticsearch.action.search.SearchScrollRequest;

View File

@ -9,7 +9,7 @@ import java.util.Arrays;
import java.util.Map; import java.util.Map;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
import static cn.easyes.core.constants.BaseEsConstants.*; import static cn.easyes.common.constants.BaseEsConstants.*;
/** /**
* 比较相关 * 比较相关

View File

@ -1,7 +1,7 @@
package cn.easyes.core.conditions.interfaces; package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.common.OrderByParam; import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.core.constants.BaseEsConstants; import cn.easyes.core.biz.OrderByParam;
import cn.easyes.core.toolkit.FieldUtils; import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.search.sort.SortBuilder; import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;

View File

@ -1,7 +1,7 @@
package cn.easyes.core.conditions.interfaces; package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.toolkit.CollectionUtils; import cn.easyes.common.utils.CollectionUtils;
import cn.easyes.core.toolkit.ExceptionUtils; import cn.easyes.common.utils.ExceptionUtils;
import cn.easyes.core.toolkit.FieldUtils; import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.geo.ShapeRelation;
@ -13,7 +13,7 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.easyes.core.constants.BaseEsConstants.DEFAULT_BOOST; import static cn.easyes.common.constants.BaseEsConstants.DEFAULT_BOOST;
/** /**
* 地理位置 * 地理位置

View File

@ -1,7 +1,7 @@
package cn.easyes.core.conditions.interfaces; package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.enums.Analyzer; import cn.easyes.common.enums.Analyzer;
import cn.easyes.core.enums.FieldType; import cn.easyes.common.enums.FieldType;
import cn.easyes.core.toolkit.FieldUtils; import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;

View File

@ -1,8 +1,5 @@
package cn.easyes.core.conditions.interfaces; package cn.easyes.core.conditions.interfaces;
import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.index.query.QueryBuilder;
import java.io.Serializable; import java.io.Serializable;
/** /**

View File

@ -1,6 +1,6 @@
package cn.easyes.core.conditions.interfaces; package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.common.EntityFieldInfo; import cn.easyes.core.biz.EntityFieldInfo;
import cn.easyes.core.toolkit.FieldUtils; import cn.easyes.core.toolkit.FieldUtils;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,13 +1,13 @@
package cn.easyes.core.config; package cn.easyes.core.config;
import cn.easyes.core.enums.ProcessIndexStrategyEnum; import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.core.enums.FieldStrategy; import cn.easyes.common.enums.IdType;
import cn.easyes.core.enums.IdType; import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.enums.RefreshPolicy; import cn.easyes.common.enums.RefreshPolicy;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.boot.context.properties.NestedConfigurationProperty;
import static cn.easyes.core.constants.BaseEsConstants.EMPTY_STR; import static cn.easyes.common.constants.BaseEsConstants.EMPTY_STR;
/** /**
* easy-es全局置项 * easy-es全局置项

View File

@ -1,20 +1,24 @@
package cn.easyes.core.toolkit; package cn.easyes.core.toolkit;
import cn.easyes.annotation.anno.HighLightMappingField;
import cn.easyes.annotation.anno.TableField;
import cn.easyes.annotation.anno.TableId;
import cn.easyes.annotation.anno.TableName;
import cn.easyes.annotation.assist.DefaultNestedClass;
import cn.easyes.common.enums.IdType;
import cn.easyes.common.utils.ClassUtils;
import cn.easyes.common.utils.FastJsonUtils;
import cn.easyes.common.utils.ReflectionKit;
import cn.easyes.common.utils.StringUtils;
import cn.easyes.core.biz.EntityFieldInfo;
import cn.easyes.core.biz.EntityInfo;
import cn.easyes.core.cache.BaseCache;
import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.core.config.GlobalConfig;
import com.alibaba.fastjson.parser.deserializer.ExtraProcessor; import com.alibaba.fastjson.parser.deserializer.ExtraProcessor;
import com.alibaba.fastjson.serializer.NameFilter; import com.alibaba.fastjson.serializer.NameFilter;
import com.alibaba.fastjson.serializer.SerializeFilter; import com.alibaba.fastjson.serializer.SerializeFilter;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import cn.easyes.core.anno.HighLightMappingField;
import cn.easyes.core.anno.TableField;
import cn.easyes.core.anno.TableId;
import cn.easyes.core.anno.TableName;
import cn.easyes.core.cache.BaseCache;
import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.common.EntityFieldInfo;
import cn.easyes.core.common.EntityInfo;
import cn.easyes.core.enums.IdType;
import cn.easyes.core.params.DefaultNestedClass;
import lombok.Getter; import lombok.Getter;
import java.lang.reflect.Field; import java.lang.reflect.Field;

View File

@ -1,9 +1,13 @@
package cn.easyes.core.toolkit; package cn.easyes.core.toolkit;
import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.common.enums.EsAttachTypeEnum;
import cn.easyes.common.enums.EsQueryTypeEnum;
import cn.easyes.common.enums.JoinTypeEnum;
import cn.easyes.common.utils.StringUtils;
import cn.easyes.core.biz.BaseEsParam;
import cn.easyes.core.biz.EntityInfo;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.common.EntityInfo;
import cn.easyes.core.enums.JoinTypeEnum;
import cn.easyes.core.params.BaseEsParam;
import org.apache.lucene.search.join.ScoreMode; import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.index.query.*; import org.elasticsearch.index.query.*;
import org.elasticsearch.join.query.HasChildQueryBuilder; import org.elasticsearch.join.query.HasChildQueryBuilder;
@ -13,10 +17,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import static cn.easyes.core.constants.BaseEsConstants.*;
import static cn.easyes.core.enums.EsAttachTypeEnum.*;
import static cn.easyes.core.enums.EsQueryTypeEnum.*;
/** /**
* 核心 查询参数封装工具类 * 核心 查询参数封装工具类
* <p> * <p>
@ -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); TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(field, value).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, termQueryBuilder); 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参数 // 此处兼容由or转入shouldList的in参数
Collection<?> values = Objects.isNull(value) ? model.getValues() : (Collection<?>) value; Collection<?> values = Objects.isNull(value) ? model.getValues() : (Collection<?>) value;
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(field, values).boost(boost); TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(field, values).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, termsQueryBuilder); 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); MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery(field, value).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, matchPhraseQueryBuilder); 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) MatchPhrasePrefixQueryBuilder matchPhrasePrefixQueryBuilder = QueryBuilders.matchPhrasePrefixQuery(field, value)
.maxExpansions((Integer) model.getExt()).boost(boost); .maxExpansions((Integer) model.getExt()).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, matchPhrasePrefixQueryBuilder); 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); PrefixQueryBuilder prefixQueryBuilder = QueryBuilders.prefixQuery(field, value.toString()).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, prefixQueryBuilder); 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); QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery(value.toString()).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, queryStringQueryBuilder); 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); MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(field, value).boost(boost);
if (StringUtils.isBlank(path)) { if (StringUtils.isBlank(path)) {
@ -82,7 +82,7 @@ public class EsQueryTypeUtil {
} else { } else {
// 嵌套类型 // 嵌套类型
if (JoinTypeEnum.NESTED.equals(model.getExt())) { 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()); NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery(model.getPath(), matchQueryBuilder, (ScoreMode) model.getScoreMode());
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, nestedQueryBuilder); setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, nestedQueryBuilder);
} else if (JoinTypeEnum.HAS_CHILD.equals(model.getExt())) { } else if (JoinTypeEnum.HAS_CHILD.equals(model.getExt())) {
@ -93,31 +93,31 @@ public class EsQueryTypeUtil {
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, hasParentQueryBuilder); 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); RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(field).boost(boost);
if (Objects.equals(originalAttachType, GT.getType())) { if (Objects.equals(originalAttachType, EsAttachTypeEnum.GT.getType())) {
rangeQueryBuilder.gt(value); rangeQueryBuilder.gt(value);
} else if (Objects.equals(originalAttachType, LT.getType())) { } else if (Objects.equals(originalAttachType, EsAttachTypeEnum.LT.getType())) {
rangeQueryBuilder.lt(value); rangeQueryBuilder.lt(value);
} else if (Objects.equals(originalAttachType, GE.getType())) { } else if (Objects.equals(originalAttachType, EsAttachTypeEnum.GE.getType())) {
rangeQueryBuilder.gte(value); rangeQueryBuilder.gte(value);
} else if (Objects.equals(originalAttachType, LE.getType())) { } else if (Objects.equals(originalAttachType, EsAttachTypeEnum.LE.getType())) {
rangeQueryBuilder.lte(value); rangeQueryBuilder.lte(value);
} }
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, rangeQueryBuilder); 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); ExistsQueryBuilder existsQueryBuilder = QueryBuilders.existsQuery(field).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, existsQueryBuilder); setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, existsQueryBuilder);
} else if (Objects.equals(queryType, WILDCARD_QUERY.getType())) { } else if (Objects.equals(queryType, EsQueryTypeEnum.WILDCARD_QUERY.getType())) {
String query; String query;
if (Objects.equals(attachType, LIKE_LEFT.getType())) { if (Objects.equals(attachType, EsAttachTypeEnum.LIKE_LEFT.getType())) {
query = WILDCARD_SIGN + value; query = BaseEsConstants.WILDCARD_SIGN + value;
} else if (Objects.equals(attachType, LIKE_RIGHT.getType())) { } else if (Objects.equals(attachType, EsAttachTypeEnum.LIKE_RIGHT.getType())) {
query = value + WILDCARD_SIGN; query = value + BaseEsConstants.WILDCARD_SIGN;
} else { } else {
query = WILDCARD_SIGN + value + WILDCARD_SIGN; query = BaseEsConstants.WILDCARD_SIGN + value + BaseEsConstants.WILDCARD_SIGN;
} }
WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery(field, query).boost(boost); WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery(field, query).boost(boost);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, wildcardQueryBuilder); setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, wildcardQueryBuilder);
@ -140,12 +140,12 @@ public class EsQueryTypeUtil {
*/ */
public static void addQueryByType(BoolQueryBuilder boolQueryBuilder, Integer queryType, Integer attachType, boolean enableMust2Filter, public static void addQueryByType(BoolQueryBuilder boolQueryBuilder, Integer queryType, Integer attachType, boolean enableMust2Filter,
List<String> fields, Object value, Object ext, Integer minShouldMatch, Float boost) { List<String> fields, Object value, Object ext, Integer minShouldMatch, Float boost) {
if (Objects.equals(queryType, MULTI_MATCH_QUERY.getType())) { if (Objects.equals(queryType, EsQueryTypeEnum.MULTI_MATCH_QUERY.getType())) {
MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(value, fields.toArray(new String[0])).boost(boost); MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(value, fields.toArray(new String[0])).boost(boost);
if (ext instanceof Operator) { if (ext instanceof Operator) {
Operator operator = (Operator) ext; Operator operator = (Operator) ext;
multiMatchQueryBuilder.operator(operator); multiMatchQueryBuilder.operator(operator);
multiMatchQueryBuilder.minimumShouldMatch(minShouldMatch + PERCENT); multiMatchQueryBuilder.minimumShouldMatch(minShouldMatch + BaseEsConstants.PERCENT);
} }
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, multiMatchQueryBuilder); setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, multiMatchQueryBuilder);
} }
@ -165,7 +165,7 @@ public class EsQueryTypeUtil {
*/ */
public static void addQueryByType(BoolQueryBuilder boolQueryBuilder, Integer queryType, Integer attachType, public static void addQueryByType(BoolQueryBuilder boolQueryBuilder, Integer queryType, Integer attachType,
boolean enableMust2Filter, String field, Object leftValue, Object rightValue, Float boost) { boolean enableMust2Filter, String field, Object leftValue, Object rightValue, Float boost) {
if (Objects.equals(queryType, INTERVAL_QUERY.getType())) { if (Objects.equals(queryType, EsQueryTypeEnum.INTERVAL_QUERY.getType())) {
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(field).boost(boost); RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(field).boost(boost);
rangeQueryBuilder.gte(leftValue).lte(rightValue); rangeQueryBuilder.gte(leftValue).lte(rightValue);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, rangeQueryBuilder); setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, rangeQueryBuilder);
@ -182,22 +182,22 @@ public class EsQueryTypeUtil {
*/ */
private static void setQueryBuilder(BoolQueryBuilder boolQueryBuilder, Integer attachType, boolean enableMust2Filter, private static void setQueryBuilder(BoolQueryBuilder boolQueryBuilder, Integer attachType, boolean enableMust2Filter,
QueryBuilder queryBuilder) { QueryBuilder queryBuilder) {
boolean must = Objects.equals(attachType, MUST.getType()) || Objects.equals(attachType, GT.getType()) boolean must = Objects.equals(attachType, EsAttachTypeEnum.MUST.getType()) || Objects.equals(attachType, EsAttachTypeEnum.GT.getType())
|| Objects.equals(attachType, LT.getType()) || Objects.equals(attachType, GE.getType()) || Objects.equals(attachType, EsAttachTypeEnum.LT.getType()) || Objects.equals(attachType, EsAttachTypeEnum.GE.getType())
|| Objects.equals(attachType, LE.getType()) || Objects.equals(attachType, IN.getType()) || Objects.equals(attachType, EsAttachTypeEnum.LE.getType()) || Objects.equals(attachType, EsAttachTypeEnum.IN.getType())
|| Objects.equals(attachType, BETWEEN.getType()) || Objects.equals(attachType, EXISTS.getType()) || Objects.equals(attachType, EsAttachTypeEnum.BETWEEN.getType()) || Objects.equals(attachType, EsAttachTypeEnum.EXISTS.getType())
|| Objects.equals(attachType, LIKE_LEFT.getType()) || Objects.equals(attachType, LIKE_RIGHT.getType()); || Objects.equals(attachType, EsAttachTypeEnum.LIKE_LEFT.getType()) || Objects.equals(attachType, EsAttachTypeEnum.LIKE_RIGHT.getType());
boolean mustNot = Objects.equals(attachType, MUST_NOT.getType()) || Objects.equals(attachType, NOT_IN.getType()) boolean mustNot = Objects.equals(attachType, EsAttachTypeEnum.MUST_NOT.getType()) || Objects.equals(attachType, EsAttachTypeEnum.NOT_IN.getType())
|| Objects.equals(attachType, NOT_EXISTS.getType()) || Objects.equals(attachType, NOT_BETWEEN.getType()); || Objects.equals(attachType, EsAttachTypeEnum.NOT_EXISTS.getType()) || Objects.equals(attachType, EsAttachTypeEnum.NOT_BETWEEN.getType());
if (must) { if (must) {
if (enableMust2Filter) { if (enableMust2Filter) {
boolQueryBuilder.filter(queryBuilder); boolQueryBuilder.filter(queryBuilder);
} else { } else {
boolQueryBuilder.must(queryBuilder); boolQueryBuilder.must(queryBuilder);
} }
} else if (Objects.equals(attachType, FILTER.getType())) { } else if (Objects.equals(attachType, EsAttachTypeEnum.FILTER.getType())) {
boolQueryBuilder.filter(queryBuilder); boolQueryBuilder.filter(queryBuilder);
} else if (Objects.equals(attachType, SHOULD.getType())) { } else if (Objects.equals(attachType, EsAttachTypeEnum.SHOULD.getType())) {
boolQueryBuilder.should(queryBuilder); boolQueryBuilder.should(queryBuilder);
} else if (mustNot) { } else if (mustNot) {
boolQueryBuilder.mustNot(queryBuilder); boolQueryBuilder.mustNot(queryBuilder);

View File

@ -1,9 +1,10 @@
package cn.easyes.core.toolkit; package cn.easyes.core.toolkit;
import cn.easyes.core.conditions.interfaces.SFunction; import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.common.params.SFunction;
import cn.easyes.common.utils.StringUtils;
import cn.easyes.core.cache.GlobalConfigCache; import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.constants.BaseEsConstants; import cn.easyes.core.config.GlobalConfig;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -1,16 +1,16 @@
package cn.easyes.core.toolkit; package cn.easyes.core.toolkit;
import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.common.enums.Analyzer;
import cn.easyes.common.enums.FieldType;
import cn.easyes.common.enums.JdkDataTypeEnum;
import cn.easyes.common.utils.CollectionUtils;
import cn.easyes.common.utils.ExceptionUtils;
import cn.easyes.common.utils.LogUtils;
import cn.easyes.common.utils.StringUtils;
import cn.easyes.core.biz.*;
import cn.easyes.core.cache.GlobalConfigCache; import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.common.EntityFieldInfo;
import cn.easyes.core.common.EntityInfo;
import cn.easyes.core.config.GlobalConfig; import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.constants.BaseEsConstants;
import cn.easyes.core.enums.Analyzer;
import cn.easyes.core.enums.FieldType;
import cn.easyes.core.enums.JdkDataTypeEnum;
import cn.easyes.core.params.CreateIndexParam;
import cn.easyes.core.params.EsIndexInfo;
import cn.easyes.core.params.EsIndexParam;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.elasticsearch.action.admin.indices.alias.Alias; import org.elasticsearch.action.admin.indices.alias.Alias;
@ -34,7 +34,6 @@ import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import static cn.easyes.core.constants.BaseEsConstants.*;
/** /**
* 索引工具类 * 索引工具类
@ -154,7 +153,7 @@ public class IndexUtils {
IndicesAliasesRequest.AliasActions aliasActions = IndicesAliasesRequest.AliasActions aliasActions =
new IndicesAliasesRequest.AliasActions(IndicesAliasesRequest.AliasActions.Type.ADD); new IndicesAliasesRequest.AliasActions(IndicesAliasesRequest.AliasActions.Type.ADD);
aliasActions.index(indexName); aliasActions.index(indexName);
aliasActions.alias(DEFAULT_ALIAS); aliasActions.alias(BaseEsConstants.DEFAULT_ALIAS);
indicesAliasesRequest.addAliasAction(aliasActions); indicesAliasesRequest.addAliasAction(aliasActions);
try { try {
client.indices().updateAliases(indicesAliasesRequest, RequestOptions.DEFAULT); client.indices().updateAliases(indicesAliasesRequest, RequestOptions.DEFAULT);
@ -176,8 +175,8 @@ public class IndexUtils {
ReindexRequest reindexRequest = new ReindexRequest(); ReindexRequest reindexRequest = new ReindexRequest();
reindexRequest.setSourceIndices(oldIndexName); reindexRequest.setSourceIndices(oldIndexName);
reindexRequest.setDestIndex(releaseIndexName); reindexRequest.setDestIndex(releaseIndexName);
reindexRequest.setDestOpType(DEFAULT_DEST_OP_TYPE); reindexRequest.setDestOpType(BaseEsConstants.DEFAULT_DEST_OP_TYPE);
reindexRequest.setConflicts(DEFAULT_CONFLICTS); reindexRequest.setConflicts(BaseEsConstants.DEFAULT_CONFLICTS);
reindexRequest.setRefresh(Boolean.TRUE); reindexRequest.setRefresh(Boolean.TRUE);
try { try {
BulkByScrollResponse response = client.reindex(reindexRequest, RequestOptions.DEFAULT); BulkByScrollResponse response = client.reindex(reindexRequest, RequestOptions.DEFAULT);
@ -207,7 +206,7 @@ public class IndexUtils {
.flatMap(aliases -> Optional.ofNullable(aliases.get(indexName))) .flatMap(aliases -> Optional.ofNullable(aliases.get(indexName)))
.ifPresent(aliasMetadataList -> .ifPresent(aliasMetadataList ->
aliasMetadataList.forEach(aliasMetadata -> { aliasMetadataList.forEach(aliasMetadata -> {
if (DEFAULT_ALIAS.equals(aliasMetadata.alias())) { if (BaseEsConstants.DEFAULT_ALIAS.equals(aliasMetadata.alias())) {
esIndexInfo.setHasDefaultAlias(Boolean.TRUE); esIndexInfo.setHasDefaultAlias(Boolean.TRUE);
} }
})); }));
@ -216,10 +215,10 @@ public class IndexUtils {
Optional.ofNullable(getIndexResponse.getSettings()) Optional.ofNullable(getIndexResponse.getSettings())
.flatMap(settingsMap -> Optional.ofNullable(settingsMap.get(indexName))) .flatMap(settingsMap -> Optional.ofNullable(settingsMap.get(indexName)))
.ifPresent(p -> { .ifPresent(p -> {
String shardsNumStr = p.get(SHARDS_NUM_KEY); String shardsNumStr = p.get(BaseEsConstants.SHARDS_NUM_KEY);
Optional.ofNullable(shardsNumStr) Optional.ofNullable(shardsNumStr)
.ifPresent(s -> esIndexInfo.setShardsNum(Integer.parseInt(s))); .ifPresent(s -> esIndexInfo.setShardsNum(Integer.parseInt(s)));
String replicasNumStr = p.get(REPLICAS_NUM_KEY); String replicasNumStr = p.get(BaseEsConstants.REPLICAS_NUM_KEY);
Optional.ofNullable(replicasNumStr) Optional.ofNullable(replicasNumStr)
.ifPresent(r -> esIndexInfo.setReplicasNum(Integer.parseInt(r))); .ifPresent(r -> esIndexInfo.setReplicasNum(Integer.parseInt(r)));
}); });
@ -310,7 +309,7 @@ public class IndexUtils {
indexParamList.forEach(indexParam -> { indexParamList.forEach(indexParam -> {
Map<String, Object> info = new HashMap<>(); Map<String, Object> info = new HashMap<>();
Optional.ofNullable(indexParam.getDateFormat()).ifPresent(format -> info.put(FORMAT, indexParam.getDateFormat())); Optional.ofNullable(indexParam.getDateFormat()).ifPresent(format -> info.put(BaseEsConstants.FORMAT, indexParam.getDateFormat()));
info.put(BaseEsConstants.TYPE, indexParam.getFieldType()); info.put(BaseEsConstants.TYPE, indexParam.getFieldType());
// 设置分词器 // 设置分词器
if (FieldType.TEXT.getType().equals(indexParam.getFieldType())) { if (FieldType.TEXT.getType().equals(indexParam.getFieldType())) {
@ -344,9 +343,9 @@ public class IndexUtils {
*/ */
public static boolean changeAliasAtomic(RestHighLevelClient client, String oldIndexName, String releaseIndexName) { public static boolean changeAliasAtomic(RestHighLevelClient client, String oldIndexName, String releaseIndexName) {
IndicesAliasesRequest.AliasActions addIndexAction = new IndicesAliasesRequest.AliasActions( IndicesAliasesRequest.AliasActions addIndexAction = new IndicesAliasesRequest.AliasActions(
IndicesAliasesRequest.AliasActions.Type.ADD).index(releaseIndexName).alias(DEFAULT_ALIAS); IndicesAliasesRequest.AliasActions.Type.ADD).index(releaseIndexName).alias(BaseEsConstants.DEFAULT_ALIAS);
IndicesAliasesRequest.AliasActions removeAction = new IndicesAliasesRequest.AliasActions( IndicesAliasesRequest.AliasActions removeAction = new IndicesAliasesRequest.AliasActions(
IndicesAliasesRequest.AliasActions.Type.REMOVE).index(oldIndexName).alias(DEFAULT_ALIAS); IndicesAliasesRequest.AliasActions.Type.REMOVE).index(oldIndexName).alias(BaseEsConstants.DEFAULT_ALIAS);
IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest(); IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();
indicesAliasesRequest.addAliasAction(addIndexAction); indicesAliasesRequest.addAliasAction(addIndexAction);
@ -487,7 +486,7 @@ public class IndexUtils {
// 重试 看加了后缀的_s0 和_s1是否存在 // 重试 看加了后缀的_s0 和_s1是否存在
for (int i = 0; i <= 1; i++) { for (int i = 0; i <= 1; i++) {
String retryIndexName = entityInfo.getIndexName() + S_SUFFIX + i; String retryIndexName = entityInfo.getIndexName() + BaseEsConstants.S_SUFFIX + i;
exists = IndexUtils.existsIndex(client, retryIndexName); exists = IndexUtils.existsIndex(client, retryIndexName);
if (exists) { if (exists) {
entityInfo.setRetrySuccessIndexName(retryIndexName); entityInfo.setRetrySuccessIndexName(retryIndexName);
@ -513,14 +512,14 @@ public class IndexUtils {
} }
try { try {
// 尝试获取分布式锁 // 尝试获取分布式锁
boolean lock = LockUtils.tryLock(client, entityClass.getSimpleName().toLowerCase(), LOCK_MAX_RETRY); boolean lock = LockUtils.tryLock(client, entityClass.getSimpleName().toLowerCase(), BaseEsConstants.LOCK_MAX_RETRY);
if (!lock) { if (!lock) {
LogUtils.warn("retry get distribute lock failed, please check whether other resources have been preempted or deadlocked"); LogUtils.warn("retry get distribute lock failed, please check whether other resources have been preempted or deadlocked");
return Boolean.FALSE; return Boolean.FALSE;
} }
return biFunction.apply(entityClass, client); return biFunction.apply(entityClass, client);
} finally { } finally {
LockUtils.release(client, entityClass.getSimpleName().toLowerCase(), LOCK_MAX_RETRY); LockUtils.release(client, entityClass.getSimpleName().toLowerCase(), BaseEsConstants.LOCK_MAX_RETRY);
} }
}).exceptionally((throwable) -> { }).exceptionally((throwable) -> {
Optional.ofNullable(throwable).ifPresent(e -> LogUtils.error("process index exception", e.toString())); Optional.ofNullable(throwable).ifPresent(e -> LogUtils.error("process index exception", e.toString()));

View File

@ -1,5 +1,6 @@
package cn.easyes.core.toolkit; package cn.easyes.core.toolkit;
import cn.easyes.common.constants.BaseEsConstants;
import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRequest;
@ -15,8 +16,6 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException; import java.io.IOException;
import static cn.easyes.core.constants.BaseEsConstants.*;
/** /**
* 基于es写的轻量级分布式锁,仅供框架内部使用,可避免引入redis/zk等其它依赖 * 基于es写的轻量级分布式锁,仅供框架内部使用,可避免引入redis/zk等其它依赖
* <p> * <p>
@ -50,11 +49,11 @@ public class LockUtils {
IndexUtils.createEmptyIndex(client, LOCK_INDEX); IndexUtils.createEmptyIndex(client, LOCK_INDEX);
} }
if (maxRetry <= ZERO) { if (maxRetry <= BaseEsConstants.ZERO) {
return Boolean.FALSE; return Boolean.FALSE;
} }
if (getCount(client, idValue) > ZERO) { if (getCount(client, idValue) > BaseEsConstants.ZERO) {
try { try {
Thread.sleep(WAIT_SECONDS / maxRetry); Thread.sleep(WAIT_SECONDS / maxRetry);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -76,7 +75,7 @@ public class LockUtils {
private static boolean createLock(RestHighLevelClient client, String idValue) { private static boolean createLock(RestHighLevelClient client, String idValue) {
IndexRequest indexRequest = new IndexRequest(LOCK_INDEX); IndexRequest indexRequest = new IndexRequest(LOCK_INDEX);
indexRequest.id(idValue); indexRequest.id(idValue);
indexRequest.source(DISTRIBUTED_LOCK_TIP_JSON, XContentType.JSON); indexRequest.source(BaseEsConstants.DISTRIBUTED_LOCK_TIP_JSON, XContentType.JSON);
IndexResponse response; IndexResponse response;
try { try {
response = client.index(indexRequest, RequestOptions.DEFAULT); response = client.index(indexRequest, RequestOptions.DEFAULT);
@ -98,7 +97,7 @@ public class LockUtils {
public synchronized static boolean release(RestHighLevelClient client, String idValue, Integer maxRetry) { public synchronized static boolean release(RestHighLevelClient client, String idValue, Integer maxRetry) {
DeleteRequest deleteRequest = new DeleteRequest(LOCK_INDEX); DeleteRequest deleteRequest = new DeleteRequest(LOCK_INDEX);
deleteRequest.id(idValue); deleteRequest.id(idValue);
if (maxRetry <= ZERO) { if (maxRetry <= BaseEsConstants.ZERO) {
return Boolean.FALSE; return Boolean.FALSE;
} }
@ -150,7 +149,7 @@ public class LockUtils {
response = client.search(searchRequest, RequestOptions.DEFAULT); response = client.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
return ONE; return BaseEsConstants.ONE;
} }
return (int) response.getHits().getTotalHits().value; return (int) response.getHits().getTotalHits().value;
} }

View File

@ -1,6 +1,6 @@
package cn.easyes.core.toolkit; package cn.easyes.core.toolkit;
import cn.easyes.core.common.PageInfo; import cn.easyes.core.biz.PageInfo;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

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>0.9.21</version> <version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath> <relativePath>../easy-es-parent</relativePath>
</parent> </parent>
@ -18,4 +18,11 @@
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
</properties> </properties>
<dependencies>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-annotation</artifactId>
</dependency>
</dependencies>
</project> </project>

View File

@ -1,4 +1,6 @@
package cn.easyes.extension.plugins; package cn.easyes.extension.context;
import cn.easyes.extension.plugins.Plugin;
/** /**
* <p> * <p>

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.plugins; package cn.easyes.extension.context;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.plugins; package cn.easyes.extension.context;
/** /**
* interceptorChain上下文 * interceptorChain上下文

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.plugins; package cn.easyes.extension.context;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;

View File

@ -1,9 +1,11 @@
package cn.easyes.extension.plugins; package cn.easyes.extension.plugins;
import cn.easyes.extension.anno.Intercepts; import cn.easyes.annotation.anno.Intercepts;
import cn.easyes.extension.anno.Signature; import cn.easyes.annotation.anno.Signature;
import cn.easyes.extension.utils.ExceptionUtil; 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.InvocationHandler;
import java.lang.reflect.Method; import java.lang.reflect.Method;

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>0.9.21</version> <version>0.9.30</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>
@ -20,10 +20,11 @@
</licenses> </licenses>
<modules> <modules>
<module>../easy-es-core</module>
<module>../easy-es-boot-starter</module> <module>../easy-es-boot-starter</module>
<module>../easy-es-core</module>
<module>../easy-es-extension</module> <module>../easy-es-extension</module>
<module>../easy-es-annotation</module> <module>../easy-es-annotation</module>
<module>../easy-es-common</module>
</modules> </modules>
<properties> <properties>
@ -38,6 +39,31 @@
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-core</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-extension</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-common</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-annotation</artifactId>
<version>${version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>

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>0.9.21</version> <version>0.9.30</version>
</parent> </parent>
<properties> <properties>
@ -21,7 +21,6 @@
<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>0.9.21</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
@ -31,19 +30,5 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,6 +1,6 @@
package cn.easyes.sample; package cn.easyes.sample;
import cn.easyes.autoconfig.annotation.EsMapperScan; import cn.easyes.starter.register.EsMapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -10,7 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* Copyright © 2021 xpc1024 All Rights Reserved * Copyright © 2021 xpc1024 All Rights Reserved
**/ **/
@SpringBootApplication @SpringBootApplication
@EsMapperScan("com.xpc.easyes.sample.mapper") @EsMapperScan("cn.easyes.sample.mapper")
public class EasyEsApplication { public class EasyEsApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(EasyEsApplication.class, args); SpringApplication.run(EasyEsApplication.class, args);

View File

@ -18,11 +18,26 @@ import java.util.List;
* Copyright © 2021 xpc1024 All Rights Reserved * Copyright © 2021 xpc1024 All Rights Reserved
**/ **/
@RestController @RestController
public class TestController { public class SampleController {
@Resource @Resource
private DocumentMapper documentMapper; private DocumentMapper documentMapper;
/**
* 初始化插入数据,默认开启自动挡,自动挡模式下,索引会自动创建及更新. 若未开启自动挡,则在此步骤前需先调用创建索引API完成索引创建
*
* @return
*/
@GetMapping("insert")
public Integer insert() {
Document document = new Document();
document.setTitle("测试1");
document.setContent("测试内容1");
document.setCreator("老汉");
document.setGmtCreate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
return documentMapper.insert(document);
}
/** /**
* 演示根据标题精确查询文章 * 演示根据标题精确查询文章
* 例如title传值为 我真帅,那么在当前配置的索引下,所有标题为'我真帅'的文章都会被查询出来 * 例如title传值为 我真帅,那么在当前配置的索引下,所有标题为'我真帅'的文章都会被查询出来
@ -39,15 +54,6 @@ public class TestController {
return documentMapper.selectList(wrapper); return documentMapper.selectList(wrapper);
} }
@GetMapping("insert")
public Integer insert(){
Document document = new Document();
document.setTitle("测试1");
document.setContent("测试内容1");
document.setCreator("老汉");
document.setGmtCreate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
return documentMapper.insert(document);
}
/** /**
* 演示根据title删除文章同时会被 DeleteInterceptor 拦截执行逻辑删除 * 演示根据title删除文章同时会被 DeleteInterceptor 拦截执行逻辑删除

View File

@ -1,18 +1,16 @@
package cn.easyes.sample.entity; package cn.easyes.sample.entity;
import cn.easyes.core.anno.HighLightMappingField; import cn.easyes.annotation.anno.HighLightMappingField;
import cn.easyes.core.anno.TableField; import cn.easyes.annotation.anno.TableField;
import cn.easyes.core.anno.TableId; import cn.easyes.annotation.anno.TableId;
import cn.easyes.core.anno.TableName; import cn.easyes.annotation.anno.TableName;
import cn.easyes.core.enums.Analyzer; import cn.easyes.common.enums.Analyzer;
import cn.easyes.core.enums.FieldStrategy; import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.core.enums.FieldType; import cn.easyes.common.enums.FieldType;
import cn.easyes.core.enums.IdType; import cn.easyes.common.enums.IdType;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.List;
/** /**
* es 数据模型 * es 数据模型
* <p> * <p>
@ -76,9 +74,4 @@ public class Document {
* 文档点赞数 * 文档点赞数
*/ */
private Integer starNum; private Integer starNum;
/**
* 嵌套类型 注意,务必像下面示例一样指定类型为nested及其nested class,否则会导致框架无法正常运行
*/
@TableField(fieldType = FieldType.NESTED, nestedClass = User.class)
private List<User> users;
} }

Some files were not shown because too many files have changed in this diff Show More