SpringBoot整合easy-es

一、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:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值