简介
# 简介
Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称MP),那么您基本可以零学习成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比MP更简单,同时也融入了更多Es独有的功能,助力您快速实现各种场景的开发.
理念 把简单,易用,方便留给用户,把复杂留给框架.
愿景 让天下没有难用的Es, 致力于成为全球最受欢迎的ElasticSearch搜索引擎开发框架.
# 优势
- 全自动索引托管: 全球开源首创的索引托管模式,开发者无需关心索引的创建更新及数据迁移等繁琐步骤,索引全生命周期皆可托管给框架,由框架自动完成,过程零停机,用户无感知,彻底解放开发者
- 智能字段类型推断: 根据索引类型和当前查询类型上下文综合智能判断当前查询是否需要拼接.keyword后缀,减少小白误用的可能
- 屏蔽语言差异: 开发者只需要会MySQL语法即可使用Es,真正做到一通百通,无需学习枯燥易忘的Es语法,Es使用相对MySQL较低频,学了长期不用也会忘,没必要浪费这时间.开发就应该专注于业务,省下的时间去撸铁,去陪女朋友陪家人,不做资本家的韭菜
- 代码量极少: 与直接使用RestHighLevelClient相比,相同的查询平均可以节省3-80倍左右的代码量
- 零魔法值: 字段名称直接从实体中获取,无需输入字段名称字符串这种魔法值,提高代码可读性,杜绝因字段名称修改而代码漏改带来的Bug
- 拓展性强: 框架内置混合查询,原生查询,无论是索引层面还是CRUD层面,都拥有>=原生API的拓展性,无需担心引入后影响开发,只要是ES本身能支持的功能使用Easy-ES都可以搞定
- 零额外学习成本: 开发者只要会国内最受欢迎的Mybatis-Plus语法,即可无缝迁移至EE,EE采用和前者相同的语法,消除使用者额外学习成本,直接上手,爽
- 降低开发者门槛: Es通常需要中高级开发者才能驾驭,但通过接入EE,即便是只了解ES基础的初学者也可以轻松驾驭ES完成绝大多数需求的开发,可以提高人员利用率,降低企业成本
# 特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 强大的 CRUD 操作:内置通用 Mapper,仅仅通过少量配置即可实现大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错段
- 支持主键自动生成:支持2 种主键策略,可自由配置,完美解决主键问题
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 内置分页插件:基于RestHighLevelClient 物理分页,开发者无需关心具体操作,且无需额外配置插件,写分页等同于普通 List 查询,且保持和PageHelper插件同样的分页返回字段,无需担心命名影响
- MySQL功能全覆盖:MySQL中支持的功能通过EE都可以轻松实现
- 支持ES高阶语法:支持高亮搜索,分词查询,权重查询,Geo地理位置查询,IP查询,聚合查询等高阶语法
- 良好的拓展性:底层仍使用RestHighLevelClient,可保持其拓展性,开发者在使用EE的同时,仍可使用RestHighLevelClient的功能
...
# 功能结构
# 框架架构
# 代码托管
# 参与贡献
在Easy-Es出道前,由于ES本身API的高复杂性,市面上除了SpringData一家在做ES-ORM,Easy-Es的出现填补了国内ES-ORM十多年的空缺,并且MP的设计理念天然优于SpringData,目前经过长期不懈的努力,我们在国内ES-ORM这片市场已经稳居第一,但我们并不满足于此,我们的目标是成为全球最受欢迎的ES-ORM,所以在此欢迎各路好汉一起来参与完善 Easy-Es,我们期待你的 PR!
- 贡献代码:代码地址 Easy-ES (opens new window),欢迎提交 Issue 或者 Pull Requests
- 维护文档:文档地址 Easy-ES (opens new window),欢迎参与翻译和修订
帮助我们改善此文档 (opens new window)
上次更新: 2024/07/20