一、easy-es简介
EasyES是一款基于Elasticsearch官方提供的RestHighLevelClient开发的ORM框架,旨在简化开发流程并提高效率。 EasyES在保持RestHighLevelClient原有功能的基础上进行增强,而不做任何改变。它采用与Mybatis-Plus相似的语法,使得开发者可以无缝迁移至EasyES,无需额外学习成本。EasyES的核心理念是将简单、易用性留给用户,将复杂性留给框架,致力于成为全球最受欢迎的ElasticSearch搜索引擎开发框架。
EasyES的主要特点包括:
- 全自动索引托管:全球开源首创的索引托管模式,无需关心索引的创建、更新及数据迁移等繁琐步骤,彻底解放开发者。
- 屏蔽语言差异:开发者只需要会MySQL语法即可使用ES,无需学习复杂的ES语法。
- 减少代码量:与直接使用RestHighLevelClient相比,相同的查询可以节省3-5倍的代码量。
- 零魔法值:字段名称直接从实体中获取,无需输入字段名称字符串,提高代码可读性。
- 降低门槛:通过EasyES,即便是只了解ES基础的初学者也可以轻松驾驭ES完成绝大多数需求的开发。
- 无侵入:引入EasyES不会对现有工程产生影响,启动即会自动注入基本的CURD操作,性能基本无损耗。
easy-es官网 https://www.easy-es.cn/

二、实现基于Spring Boot框架的应用程序代码
1.添加相关依赖
<!-- 引入 Easy-ES 最新版本的依赖 -->
<dependency>
<groupId>org.dromara.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<!-- 指定 Easy-ES 的版本号,确保使用的是最新稳定版本 -->
<version>2.0.0-beta3</version>
</dependency>
<!-- 引入 Spring Boot Web 启动器,并排除内置的 Elasticsearch 依赖以避免冲突 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 注释掉了版本号,这意味着 Maven 将使用项目中定义的 Spring Boot 版本 -->
<!-- 如果没有定义,则会使用最新的可用版本 -->
<!-- 这种方式可以在 Spring Boot 升级时自动更新依赖,但可能导致不兼容问题 -->
<!--<version>2.7.18</version>-->
<exclusions>
<!-- 排除 Elasticsearch REST 高级客户端 -->
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</exclusion>
<!-- 排除 Elasticsearch REST 客户端 -->
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
</exclusion>
<!-- 排除 Elasticsearch 核心库 -->
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 手动引入指定版本的 Elasticsearch REST 高级客户端 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<!-- 指定该客户端的版本号,以确保与其他依赖的兼容性 -->
<version>7.14.0</version>
</dependency>
<!-- 手动引入指定版本的 Elasticsearch REST 客户端 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<!-- 指定该客户端的版本号,以确保与其他依赖的兼容性 -->
<version>7.14.0</version>
</dependency>
<!-- 手动引入指定版本的 Elasticsearch 核心库 -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<!-- 指定核心库的版本号,以确保与其他依赖的兼容性 -->
<version>7.14.0</version>
</dependency>
一些解释:
dependency: 定义一个项目的依赖项。每个依赖项都包含一个或多个子元素,描述该依赖的详细信息。
groupId: 指定依赖项的组织或公司名称,通常与其 Maven 仓库中的路径相对应。
artifactId: 指定依赖项的唯一标识符,通常是库或模块的名称。
version: 指定依赖项的版本号。可以是具体的版本字符串,也可以使用范围或特殊版本标识。
exclusions: 用于排除某些传递性依赖项。这样可以避免因不必要的依赖导致版本冲突。
exclusion: 在 exclusions 中定义单个被排除的依赖项。包含两个子元素:groupId 和 artifactId,用于指定要排除的依赖项。
2.添加相关配置
考虑到有的用户偏好使用YML格式进行配置,而有的用户则更喜欢使用PROPERTIES格式,为了提供便利,我同时列出了这两种类型的配置选项,以便您可以根据自己的需求和喜好进行选择。
(1)yml配置
a.基础配置
easy-es:
enable: true # 默认为true,若为false则认为不启用本框架
address: 你的ip地址:9200 # 指定Elasticsearch服务的IP地址和端口,格式为IP:9200
logging:
level:
tracer: trace # 设置日志级别为trace,开发时可开启以打印ES全部请求信息及DSL语句
# 注意:开启此配置后,可以将EE的print-dsl设置为false,以避免日志重复打印
b.拓展配置(可选)
不加不影响项目启动,但是为了实现性能优化,建议您根据实际需求和场景进行相应的配置调整,进行细致的配置优化
easy-es:
keep-alive-millis: 30000 # 心跳保持时间(毫秒)。用于确保连接在无数据传输时仍然保持活动状态,防止因长时间空闲而关闭连接。
connect-timeout: 5000 # 连接超时设置(毫秒)。定义建立连接的最大等待时间,超过该时间则认为连接失败。
socket-timeout: 600000 # 数据读取超时设置(毫秒)。规定读取数据时的最大等待时间,超出此时间将中断读取操作。
request-timeout: 5000 # 请求超时设置(毫秒)。指定发送请求的最大等待时间,超过此时间则视为请求失败。
connection-request-timeout: 5000 # 连接请求超时设置(毫秒)。定义从连接池获取连接的最大等待时间。
max-conn-total: 100 # 最大总连接数。设置连接池中允许的最大连接数量。
max-conn-per-route: 100 # 每个路由的最大连接数。规定针对每个目标主机可同时建立的最大连接数量。
c.全局配置(可选)
在项目启动过程中,若未明确指定相关配置,系统将自动采用预设的默认值以确保顺利运行。
easy-es:
schema: http # 默认为 http,可选值为 https(不使用 SSL)。配置为 https 时,使用 HTTPS 协议。
banner: true # 默认为 true,是否打印启动横幅。若不需要打印,设置为 false。
global-config:
i-kun-mode: false # 是否开启小黑子模式,默认为关闭。开启后日志会更加有趣,仅供娱乐用途。
process-index-mode: manual # 索引处理模式。可选值:smoothly(平滑模式)、not_smoothly(非平滑模式)和 manual(手动模式),默认开启手动模式。
print-dsl: true # 是否在控制台打印通过该框架生成的 DSL 语句。默认为 true,建议在测试稳定后生产环境中关闭以提高性能。
distributed: false # 当前项目是否为分布式项目。默认为 true。在非手动托管索引模式下,分布式项目会获取分布式锁,非分布式项目使用 synchronized 锁。
reindexTimeOutHours: 72 # 重建索引的超时时间,单位为小时。默认值为 72 小时,根据 ES 中存储的数据量可调整。
async-process-index-blocking: true # 异步处理索引是否阻塞主线程。默认阻塞。当数据量过大时,可调整为非阻塞,以加快项目启动速度。
active-release-index-max-retry: 4320 # 在分布式环境下,平滑模式下当前客户端激活最新索引的最大重试次数。若数据量过大,重建索引数据迁移时间超过 72 小时,可增大此参数。
active-release-index-fixed-delay: 60 # 在分布式环境下,平滑模式下当前客户端激活最新索引的重试时间间隔。若希望最终一致性时效性更高,可减小此值,但会牺牲一些性能。
db-config:

最低0.47元/天 解锁文章
1862

被折叠的 条评论
为什么被折叠?



