编辑
2025-08-03
实用工具
00

目录

简介
使用
依赖
application.yml
启动类
创建es对象实体
创建mapper
调用mapper

简介

Easy-Es 是一个基于 Elasticsearch 的轻量级、高性能的 ORM(对象关系映射)框架,专为简化 Elasticsearch 的操作而设计。它的灵感来源于 MyBatis-Plus,提供了类似的链式编程、注解配置和自动 CRUD 功能,让开发者能够以更简单、更高效的方式操作 Elasticsearch。官网

特点:

  • 无需编写原始 DSL 语句 开发者无需手动拼接复杂的 Elasticsearch 查询 DSL(JSON 格式),Easy-Es 提供了链式编程风格的 API,通过 Java 代码即可完成各种查询。
  • 类 MyBatis-Plus 风格 支持 Lambda 表达式构建查询条件,类型安全,避免字段名写错。
  • 自动映射与注解支持 提供 @IndexName、@FieldName 等注解,用于映射 Java 实体类与 ES 索引、字段。 支持自动创建索引、自动更新 mapping(可选)。
  • 内置常用方法 类似于 MyBatis-Plus 的 IService 和 BaseMapper,提供 save, update, delete, list, page 等常用方法,开箱即用。
  • 分页查询支持 内置分页组件,支持 PageHelper 风格的分页查询,自动处理 from/size 或 search_after。
  • 高兼容性 支持主流的 Elasticsearch 版本(如 6.x、7.x、8.x),适配不同版本的客户端差异。
  • 集成简单 基于 Spring Boot 设计,通过注解 @EnableEasyEs 即可启用,与 Spring 生态无缝整合。
  • 支持高亮、聚合、排序、地理查询等高级功能 所有 ES 高级特性都可以通过 Java API 调用实现,无需手写 JSON。

使用

依赖

xml
<!-- 引入easy-es最新版本的依赖--> <dependency> <groupId>org.dromara.easy-es</groupId> <artifactId>easy-es-boot-starter</artifactId> <!--这里Latest Version是指最新版本的依赖,比如3.0.0,可以通过下面的图片获取--> <version>${Latest Version}</version> </dependency> <!-- 如果有依赖冲突,导致底层es相关依赖非7.17.28,需要参考避坑指南章节文档先排除springboot中内置的es依赖-->

application.yml

yml
easy-es: compatible: true # 兼容模式开关,默认为false,若您的es客户端版本小于8.x,务必设置为true才可正常使用,8.x及以上则可忽略此项配置 enable: true #默认为true,若为false则认为不启用本框架 address : 127.0.0.1:9200 # es的连接地址,必须含端口 若为集群,则可以用逗号隔开 例如:127.0.0.1:9200,127.0.0.2:9200 username: elastic #若无 则可省略此行配置 password: WG7WVmuNMtM4GwNYkyWH #若无 则可省略此行配置

启动类

扫描mapper路径

java
@SpringBootApplication @EsMapperScan("com.xpc.easyes.sample.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

创建es对象实体

JAVA
@Data @IndexName public class Document { /** * es中的唯一id */ private String id; /** * 文档标题 */ private String title; /** * 文档内容 */ private String content; }

创建mapper

java
public interface DocumentMapper extends BaseEsMapper<Document> { }

调用mapper

java
@RestController public class TestController { private final DocumentMapper documentMapper; @GetMapping("/createIndex") public Boolean createIndex() { // 1.初始化-> 创建索引(相当于mysql中的表) return documentMapper.createIndex(); } @GetMapping("/insert") public Integer insert() { // 2.初始化-> 新增数据 Document document = new Document(); document.setTitle("test"); document.setContent("content"); return documentMapper.insert(document); } @GetMapping("/search") public List<Document> search() { // 3.查询出所有标题为test的文档列表 LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>(); wrapper.eq(Document::getTitle, "test"); return documentMapper.selectList(wrapper); } }

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!