新增功能:
前序迭代已支持了一部分父子类型的查询功能,此版本对父子类型功能闭环,至此,父子类型功能已完整支持,新增功能包括:
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>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId>
<version>0.9.21</version>
<version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath>
</parent>
@ -18,4 +18,10 @@
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-common</artifactId>
</dependency>
</dependencies>
</project>

View File

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

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.anno;
package cn.easyes.annotation.anno;
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.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.core.enums.FieldStrategy;
import cn.easyes.core.enums.FieldType;
import cn.easyes.core.params.DefaultNestedClass;
import cn.easyes.annotation.assist.DefaultNestedClass;
import cn.easyes.common.enums.Analyzer;
import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.common.enums.FieldType;
import java.lang.annotation.ElementType;
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.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.Retention;

View File

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

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>easy-es-parent</artifactId>
<groupId>cn.easy-es</groupId>
<version>0.9.21</version>
<version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -21,16 +21,6 @@
<dependency>
<groupId>cn.easy-es</groupId>
<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>
<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 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.core.toolkit.StringUtils;
import cn.easyes.common.utils.ExceptionUtils;
import cn.easyes.common.utils.StringUtils;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
@ -20,8 +20,8 @@ import org.springframework.context.annotation.Configuration;
import java.util.*;
import static cn.easyes.core.constants.BaseEsConstants.COLON;
import static cn.easyes.core.constants.BaseEsConstants.DEFAULT_SCHEMA;
import static cn.easyes.common.constants.BaseEsConstants.COLON;
import static cn.easyes.common.constants.BaseEsConstants.DEFAULT_SCHEMA;
/**
* 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.autoconfig.service.AutoProcessIndexService;
import cn.easyes.core.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.toolkit.ExceptionUtils;
import cn.easyes.starter.config.EasyEsConfigProperties;
import cn.easyes.starter.service.AutoProcessIndexService;
import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.common.utils.ExceptionUtils;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.BeansException;
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.toolkit.ArrayUtils;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
import org.springframework.beans.factory.config.BeanDefinition;
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 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.autoconfig.factory.IndexStrategyFactory;
import cn.easyes.autoconfig.service.AutoProcessIndexService;
import cn.easyes.annotation.anno.Intercepts;
import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.common.utils.LogUtils;
import cn.easyes.common.utils.TypeUtils;
import cn.easyes.core.cache.BaseCache;
import cn.easyes.core.cache.GlobalConfigCache;
import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.proxy.EsMapperProxy;
import cn.easyes.core.toolkit.LogUtils;
import cn.easyes.core.toolkit.TypeUtils;
import cn.easyes.extension.anno.Intercepts;
import cn.easyes.extension.plugins.Interceptor;
import cn.easyes.extension.plugins.InterceptorChain;
import cn.easyes.extension.plugins.InterceptorChainHolder;
import cn.easyes.extension.context.Interceptor;
import cn.easyes.extension.context.InterceptorChain;
import cn.easyes.extension.context.InterceptorChainHolder;
import cn.easyes.starter.config.EasyEsConfigProperties;
import cn.easyes.starter.factory.IndexStrategyFactory;
import cn.easyes.starter.service.AutoProcessIndexService;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.FactoryBean;
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.core.toolkit.LogUtils;
import cn.easyes.common.utils.LogUtils;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.ResourceLoaderAware;
@ -18,7 +17,7 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import static cn.easyes.core.constants.BaseEsConstants.ENABLE_PREFIX;
import static cn.easyes.common.constants.BaseEsConstants.ENABLE_PREFIX;
/**
* 注册bean
@ -28,6 +27,7 @@ import static cn.easyes.core.constants.BaseEsConstants.ENABLE_PREFIX;
public class MapperScannerRegister implements ImportBeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware {
private ResourceLoader resourceLoader;
private Environment environment;
@Override
public void setResourceLoader(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;

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.core.common.EntityInfo;
import cn.easyes.core.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.params.CreateIndexParam;
import cn.easyes.core.params.EsIndexInfo;
import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.common.utils.LogUtils;
import cn.easyes.core.biz.CreateIndexParam;
import cn.easyes.core.biz.EntityInfo;
import cn.easyes.core.biz.EsIndexInfo;
import cn.easyes.core.toolkit.EntityInfoHelper;
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.springframework.boot.autoconfigure.condition.ConditionalOnClass;
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.core.common.EntityInfo;
import cn.easyes.core.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.params.CreateIndexParam;
import cn.easyes.core.params.EsIndexInfo;
import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.common.utils.LogUtils;
import cn.easyes.core.biz.CreateIndexParam;
import cn.easyes.core.biz.EntityInfo;
import cn.easyes.core.biz.EsIndexInfo;
import cn.easyes.core.toolkit.EntityInfoHelper;
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.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import static cn.easyes.core.constants.BaseEsConstants.S1_SUFFIX;
import static cn.easyes.core.constants.BaseEsConstants.SO_SUFFIX;
import static cn.easyes.common.constants.BaseEsConstants.S1_SUFFIX;
import static cn.easyes.common.constants.BaseEsConstants.SO_SUFFIX;
/**
* 自动平滑托管索引实现类,本框架默认模式,过程零停机,数据会自动转移至新索引

View File

@ -1,6 +1,6 @@
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.easyes.autoconfig.config.EsAutoConfiguration,\
cn.easyes.autoconfig.factory.IndexStrategyFactory,\
cn.easyes.autoconfig.service.impl.AutoProcessIndexSmoothlyServiceImpl,\
cn.easyes.autoconfig.service.impl.AutoProcessIndexNotSmoothlyServiceImpl
cn.easyes.starter.config.EsAutoConfiguration,\
cn.easyes.starter.factory.IndexStrategyFactory,\
cn.easyes.starter.service.impl.AutoProcessIndexSmoothlyServiceImpl,\
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的常量

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;

View File

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

View File

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

View File

@ -1,4 +1,4 @@
package cn.easyes.core.enums;
package cn.easyes.common.enums;
import lombok.AllArgsConstructor;
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.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.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.Getter;

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit;
package cn.easyes.common.utils;
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.List;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit;
package cn.easyes.common.utils;
import java.util.Collection;
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.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 lombok.AccessLevel;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.toolkit;
package cn.easyes.common.utils;
import lombok.AccessLevel;
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.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.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.Type;

View File

@ -7,7 +7,7 @@
<parent>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId>
<version>0.9.21</version>
<version>0.9.30</version>
<relativePath>../easy-es-parent</relativePath>
</parent>
@ -20,20 +20,8 @@
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</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>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-extension</artifactId>
</dependency>
<dependency>
<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;
/**

View File

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

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params;
package cn.easyes.core.biz;
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.enums.Analyzer;
import cn.easyes.core.enums.FieldStrategy;
import cn.easyes.common.enums.Analyzer;
import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.common.enums.FieldType;
import com.alibaba.fastjson.serializer.NameFilter;
import cn.easyes.core.enums.FieldType;
import lombok.AccessLevel;
import lombok.Data;
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.parser.deserializer.ExtraProcessor;
import com.alibaba.fastjson.serializer.SerializeFilter;
import cn.easyes.core.enums.IdType;
import cn.easyes.common.enums.IdType;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@ -1,4 +1,4 @@
package cn.easyes.core.params;
package cn.easyes.core.biz;
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;
/**

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +1,10 @@
package cn.easyes.core.cache;
import cn.easyes.core.conditions.BaseEsMapperImpl;
import cn.easyes.core.constants.BaseEsConstants;
import cn.easyes.core.toolkit.CollectionUtils;
import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.common.utils.CollectionUtils;
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 org.elasticsearch.client.RestHighLevelClient;

View File

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

View File

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

View File

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

View File

@ -1,10 +1,9 @@
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.enums.*;
import cn.easyes.core.params.*;
import cn.easyes.core.toolkit.*;
import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.geo.ShapeRelation;
@ -18,10 +17,10 @@ import java.util.*;
import java.util.function.BiPredicate;
import java.util.function.Function;
import static cn.easyes.core.enums.BaseEsParamTypeEnum.*;
import static cn.easyes.core.enums.EsAttachTypeEnum.*;
import static cn.easyes.core.enums.EsQueryTypeEnum.*;
import static cn.easyes.core.enums.JoinTypeEnum.*;
import static cn.easyes.common.enums.BaseEsParamTypeEnum.*;
import static cn.easyes.common.enums.EsAttachTypeEnum.*;
import static cn.easyes.common.enums.EsQueryTypeEnum.*;
import static cn.easyes.common.enums.JoinTypeEnum.*;
/**
* 抽象Lambda表达式父类

View File

@ -1,18 +1,17 @@
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.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.constants.BaseEsConstants;
import cn.easyes.core.enums.FieldStrategy;
import cn.easyes.core.enums.IdType;
import cn.easyes.core.params.CreateIndexParam;
import cn.easyes.core.params.EsIndexParam;
import cn.easyes.core.params.EsUpdateParam;
import cn.easyes.core.toolkit.*;
import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.toolkit.FieldUtils;
import cn.easyes.core.toolkit.IndexUtils;
import cn.easyes.core.toolkit.PageHelper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeFilter;

View File

@ -1,11 +1,11 @@
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.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.common.settings.Settings;

View File

@ -1,12 +1,8 @@
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.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 org.elasticsearch.action.search.SearchRequest;

View File

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

View File

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

View File

@ -1,14 +1,16 @@
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.common.EntityInfo;
import cn.easyes.core.enums.AggregationTypeEnum;
import cn.easyes.core.params.AggregationParam;
import cn.easyes.core.params.BaseEsParam;
import cn.easyes.core.params.GeoParam;
import cn.easyes.core.params.OrCount;
import cn.easyes.core.toolkit.*;
import cn.easyes.core.config.GlobalConfig;
import cn.easyes.core.toolkit.EntityInfoHelper;
import cn.easyes.core.toolkit.EsQueryTypeUtil;
import cn.easyes.core.toolkit.FieldUtils;
import lombok.NoArgsConstructor;
import lombok.SneakyThrows;
import org.elasticsearch.index.query.*;
@ -22,9 +24,9 @@ import org.elasticsearch.search.sort.SortOrder;
import java.util.*;
import static cn.easyes.core.constants.BaseEsConstants.*;
import static cn.easyes.core.enums.BaseEsParamTypeEnum.*;
import static cn.easyes.core.enums.EsAttachTypeEnum.*;
import static cn.easyes.common.constants.BaseEsConstants.*;
import static cn.easyes.common.enums.BaseEsParamTypeEnum.*;
import static cn.easyes.common.enums.EsAttachTypeEnum.*;
/**
* 核心 wrpeer处理类

View File

@ -3,7 +3,7 @@ package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.conditions.LambdaEsIndexWrapper;
import cn.easyes.core.conditions.LambdaEsQueryWrapper;
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.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;

View File

@ -9,7 +9,7 @@ import java.util.Arrays;
import java.util.Map;
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;
import cn.easyes.core.common.OrderByParam;
import cn.easyes.core.constants.BaseEsConstants;
import cn.easyes.common.constants.BaseEsConstants;
import cn.easyes.core.biz.OrderByParam;
import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortOrder;

View File

@ -1,7 +1,7 @@
package cn.easyes.core.conditions.interfaces;
import cn.easyes.core.toolkit.CollectionUtils;
import cn.easyes.core.toolkit.ExceptionUtils;
import cn.easyes.common.utils.CollectionUtils;
import cn.easyes.common.utils.ExceptionUtils;
import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.geo.ShapeRelation;
@ -13,7 +13,7 @@ import java.util.Collection;
import java.util.List;
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;
import cn.easyes.core.enums.Analyzer;
import cn.easyes.core.enums.FieldType;
import cn.easyes.common.enums.Analyzer;
import cn.easyes.common.enums.FieldType;
import cn.easyes.core.toolkit.FieldUtils;
import org.elasticsearch.common.settings.Settings;

View File

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

View File

@ -1,6 +1,6 @@
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 java.io.Serializable;

View File

@ -1,13 +1,13 @@
package cn.easyes.core.config;
import cn.easyes.core.enums.ProcessIndexStrategyEnum;
import cn.easyes.core.enums.FieldStrategy;
import cn.easyes.core.enums.IdType;
import cn.easyes.core.enums.RefreshPolicy;
import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.common.enums.IdType;
import cn.easyes.common.enums.ProcessIndexStrategyEnum;
import cn.easyes.common.enums.RefreshPolicy;
import lombok.Data;
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全局置项

View File

@ -1,20 +1,24 @@
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 com.alibaba.fastjson.parser.deserializer.ExtraProcessor;
import com.alibaba.fastjson.serializer.NameFilter;
import com.alibaba.fastjson.serializer.SerializeFilter;
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 java.lang.reflect.Field;

View File

@ -1,9 +1,13 @@
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.common.EntityInfo;
import cn.easyes.core.enums.JoinTypeEnum;
import cn.easyes.core.params.BaseEsParam;
import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.index.query.*;
import org.elasticsearch.join.query.HasChildQueryBuilder;
@ -13,10 +17,6 @@ import java.util.Collection;
import java.util.List;
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>
@ -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<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);
if (ext instanceof Operator) {
Operator operator = (Operator) ext;
multiMatchQueryBuilder.operator(operator);
multiMatchQueryBuilder.minimumShouldMatch(minShouldMatch + PERCENT);
multiMatchQueryBuilder.minimumShouldMatch(minShouldMatch + BaseEsConstants.PERCENT);
}
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, multiMatchQueryBuilder);
}
@ -165,7 +165,7 @@ public class EsQueryTypeUtil {
*/
public static void addQueryByType(BoolQueryBuilder boolQueryBuilder, Integer queryType, Integer attachType,
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.gte(leftValue).lte(rightValue);
setQueryBuilder(boolQueryBuilder, attachType, enableMust2Filter, rangeQueryBuilder);
@ -182,22 +182,22 @@ public class EsQueryTypeUtil {
*/
private static void setQueryBuilder(BoolQueryBuilder boolQueryBuilder, Integer attachType, boolean enableMust2Filter,
QueryBuilder queryBuilder) {
boolean must = Objects.equals(attachType, MUST.getType()) || Objects.equals(attachType, GT.getType())
|| Objects.equals(attachType, LT.getType()) || Objects.equals(attachType, GE.getType())
|| Objects.equals(attachType, LE.getType()) || Objects.equals(attachType, IN.getType())
|| Objects.equals(attachType, BETWEEN.getType()) || Objects.equals(attachType, EXISTS.getType())
|| Objects.equals(attachType, LIKE_LEFT.getType()) || Objects.equals(attachType, LIKE_RIGHT.getType());
boolean mustNot = Objects.equals(attachType, MUST_NOT.getType()) || Objects.equals(attachType, NOT_IN.getType())
|| Objects.equals(attachType, NOT_EXISTS.getType()) || Objects.equals(attachType, NOT_BETWEEN.getType());
boolean must = Objects.equals(attachType, EsAttachTypeEnum.MUST.getType()) || Objects.equals(attachType, EsAttachTypeEnum.GT.getType())
|| Objects.equals(attachType, EsAttachTypeEnum.LT.getType()) || Objects.equals(attachType, EsAttachTypeEnum.GE.getType())
|| Objects.equals(attachType, EsAttachTypeEnum.LE.getType()) || Objects.equals(attachType, EsAttachTypeEnum.IN.getType())
|| Objects.equals(attachType, EsAttachTypeEnum.BETWEEN.getType()) || Objects.equals(attachType, EsAttachTypeEnum.EXISTS.getType())
|| Objects.equals(attachType, EsAttachTypeEnum.LIKE_LEFT.getType()) || Objects.equals(attachType, EsAttachTypeEnum.LIKE_RIGHT.getType());
boolean mustNot = Objects.equals(attachType, EsAttachTypeEnum.MUST_NOT.getType()) || Objects.equals(attachType, EsAttachTypeEnum.NOT_IN.getType())
|| Objects.equals(attachType, EsAttachTypeEnum.NOT_EXISTS.getType()) || Objects.equals(attachType, EsAttachTypeEnum.NOT_BETWEEN.getType());
if (must) {
if (enableMust2Filter) {
boolQueryBuilder.filter(queryBuilder);
} else {
boolQueryBuilder.must(queryBuilder);
}
} else if (Objects.equals(attachType, FILTER.getType())) {
} else if (Objects.equals(attachType, EsAttachTypeEnum.FILTER.getType())) {
boolQueryBuilder.filter(queryBuilder);
} else if (Objects.equals(attachType, SHOULD.getType())) {
} else if (Objects.equals(attachType, EsAttachTypeEnum.SHOULD.getType())) {
boolQueryBuilder.should(queryBuilder);
} else if (mustNot) {
boolQueryBuilder.mustNot(queryBuilder);

View File

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

View File

@ -1,16 +1,16 @@
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.common.EntityFieldInfo;
import cn.easyes.core.common.EntityInfo;
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.NoArgsConstructor;
import org.elasticsearch.action.admin.indices.alias.Alias;
@ -34,7 +34,6 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiFunction;
import static cn.easyes.core.constants.BaseEsConstants.*;
/**
* 索引工具类
@ -154,7 +153,7 @@ public class IndexUtils {
IndicesAliasesRequest.AliasActions aliasActions =
new IndicesAliasesRequest.AliasActions(IndicesAliasesRequest.AliasActions.Type.ADD);
aliasActions.index(indexName);
aliasActions.alias(DEFAULT_ALIAS);
aliasActions.alias(BaseEsConstants.DEFAULT_ALIAS);
indicesAliasesRequest.addAliasAction(aliasActions);
try {
client.indices().updateAliases(indicesAliasesRequest, RequestOptions.DEFAULT);
@ -176,8 +175,8 @@ public class IndexUtils {
ReindexRequest reindexRequest = new ReindexRequest();
reindexRequest.setSourceIndices(oldIndexName);
reindexRequest.setDestIndex(releaseIndexName);
reindexRequest.setDestOpType(DEFAULT_DEST_OP_TYPE);
reindexRequest.setConflicts(DEFAULT_CONFLICTS);
reindexRequest.setDestOpType(BaseEsConstants.DEFAULT_DEST_OP_TYPE);
reindexRequest.setConflicts(BaseEsConstants.DEFAULT_CONFLICTS);
reindexRequest.setRefresh(Boolean.TRUE);
try {
BulkByScrollResponse response = client.reindex(reindexRequest, RequestOptions.DEFAULT);
@ -207,7 +206,7 @@ public class IndexUtils {
.flatMap(aliases -> Optional.ofNullable(aliases.get(indexName)))
.ifPresent(aliasMetadataList ->
aliasMetadataList.forEach(aliasMetadata -> {
if (DEFAULT_ALIAS.equals(aliasMetadata.alias())) {
if (BaseEsConstants.DEFAULT_ALIAS.equals(aliasMetadata.alias())) {
esIndexInfo.setHasDefaultAlias(Boolean.TRUE);
}
}));
@ -216,10 +215,10 @@ public class IndexUtils {
Optional.ofNullable(getIndexResponse.getSettings())
.flatMap(settingsMap -> Optional.ofNullable(settingsMap.get(indexName)))
.ifPresent(p -> {
String shardsNumStr = p.get(SHARDS_NUM_KEY);
String shardsNumStr = p.get(BaseEsConstants.SHARDS_NUM_KEY);
Optional.ofNullable(shardsNumStr)
.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)
.ifPresent(r -> esIndexInfo.setReplicasNum(Integer.parseInt(r)));
});
@ -310,7 +309,7 @@ public class IndexUtils {
indexParamList.forEach(indexParam -> {
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());
// 设置分词器
if (FieldType.TEXT.getType().equals(indexParam.getFieldType())) {
@ -344,9 +343,9 @@ public class IndexUtils {
*/
public static boolean changeAliasAtomic(RestHighLevelClient client, String oldIndexName, String releaseIndexName) {
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.Type.REMOVE).index(oldIndexName).alias(DEFAULT_ALIAS);
IndicesAliasesRequest.AliasActions.Type.REMOVE).index(oldIndexName).alias(BaseEsConstants.DEFAULT_ALIAS);
IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();
indicesAliasesRequest.addAliasAction(addIndexAction);
@ -487,7 +486,7 @@ public class IndexUtils {
// 重试 看加了后缀的_s0 和_s1是否存在
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);
if (exists) {
entityInfo.setRetrySuccessIndexName(retryIndexName);
@ -513,14 +512,14 @@ public class IndexUtils {
}
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) {
LogUtils.warn("retry get distribute lock failed, please check whether other resources have been preempted or deadlocked");
return Boolean.FALSE;
}
return biFunction.apply(entityClass, client);
} finally {
LockUtils.release(client, entityClass.getSimpleName().toLowerCase(), LOCK_MAX_RETRY);
LockUtils.release(client, entityClass.getSimpleName().toLowerCase(), BaseEsConstants.LOCK_MAX_RETRY);
}
}).exceptionally((throwable) -> {
Optional.ofNullable(throwable).ifPresent(e -> LogUtils.error("process index exception", e.toString()));

View File

@ -1,5 +1,6 @@
package cn.easyes.core.toolkit;
import cn.easyes.common.constants.BaseEsConstants;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
@ -15,8 +16,6 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
import static cn.easyes.core.constants.BaseEsConstants.*;
/**
* 基于es写的轻量级分布式锁,仅供框架内部使用,可避免引入redis/zk等其它依赖
* <p>
@ -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;
}

View File

@ -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;

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
package cn.easyes.extension.plugins;
package cn.easyes.extension.context;
/**
* 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.Method;

View File

@ -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;

View File

@ -6,7 +6,7 @@
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-parent</artifactId>
<version>0.9.21</version>
<version>0.9.30</version>
<name>easy-es-parent</name>
<description>easy use for elastic search</description>
@ -20,10 +20,11 @@
</licenses>
<modules>
<module>../easy-es-core</module>
<module>../easy-es-boot-starter</module>
<module>../easy-es-core</module>
<module>../easy-es-extension</module>
<module>../easy-es-annotation</module>
<module>../easy-es-common</module>
</modules>
<properties>
@ -38,6 +39,31 @@
<dependencyManagement>
<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>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>

View File

@ -9,7 +9,7 @@
<parent>
<artifactId>easy-es</artifactId>
<groupId>cn.easy-es</groupId>
<version>0.9.21</version>
<version>0.9.30</version>
</parent>
<properties>
@ -21,7 +21,6 @@
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>0.9.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -31,19 +30,5 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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>
</project>

View File

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

View File

@ -18,11 +18,26 @@ import java.util.List;
* Copyright © 2021 xpc1024 All Rights Reserved
**/
@RestController
public class TestController {
public class SampleController {
@Resource
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传值为 我真帅,那么在当前配置的索引下,所有标题为'我真帅'的文章都会被查询出来
@ -39,15 +54,6 @@ public class TestController {
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 拦截执行逻辑删除

View File

@ -1,18 +1,16 @@
package cn.easyes.sample.entity;
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.enums.Analyzer;
import cn.easyes.core.enums.FieldStrategy;
import cn.easyes.core.enums.FieldType;
import cn.easyes.core.enums.IdType;
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.common.enums.Analyzer;
import cn.easyes.common.enums.FieldStrategy;
import cn.easyes.common.enums.FieldType;
import cn.easyes.common.enums.IdType;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* es 数据模型
* <p>
@ -76,9 +74,4 @@ public class Document {
* 文档点赞数
*/
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