好的工具,就应该像女孩子的衣服
  QHt7QJyNQUoA 2023年11月02日 34 0

哈喽,大家好,我是指北君

ElasticSearch 凭借强大的搜索功能和优异的性能从众多搜索引擎中脱颖而出,赢得了广大程序员的喜爱。作为搜索服务界的扛把子,凭借其分布式、高扩展、高实时的搜索与数据分析能力,备受各个大小公司的追捧,将 Kibana 和 Logstash 收为麾下后,ELK的组合更是奠定了第一的位置,远远的将其它竞争对手甩在身后。

虽然 ElasticSearch 的地位已经无法撼动,使用者同时也深受 DSL 的摧残,特立独行的使用方式深受广大程序员的诟病,让很多熟悉SQL的程序员觉得使用的学习成本特别高,甚至直接被劝退。

今天指北君就给大家介绍一个开源框架 Easy-Es,大大地降低 ES 使用的成本。

简介

好的工具,就应该像女孩子的衣服_搜索引擎

Easy-Es 是一款简化 ElasticSearch 搜索引擎操作的开源框架,全自动智能索引托管。简化 CRUD 及其它高阶操作,可以更好地帮助开发者减轻开发负担。底层采用 Es 官方提供的 RestHighLevelClient,保证其原生性能及拓展性。

Easy-Es 的开发者,参考 Mybatis-Plus,在其对 ES DSL 语法进行深入研究后,在 DSL 语法之上,对照Mybatis-Plus的功能,开发出了一个能与 ES 交互的 ES 版 Mybatis-Plus。工具使用起来也极为简单。

下面是 Easy-Es 的代码框架图:

好的工具,就应该像女孩子的衣服_搜索_02

使用对比

ElasticSearch 的 DSL 在使用惯了 SQL 的程序员来说非常不习惯。RestHighLevelClient 的 API 作为 ElasticSearch 备受推荐的客户端组件,其封装系统操作 ES 的方法, 包括索引结构管理,数据增删改查管理,常用查询方法,并且可以结合原生 ES 查询原生语法,功能十分强大。下面我们就将 Easy-Es 和 RestHighLevelClient 对比一下。从代码层面上,我们来感受一下 Easy-Es 的简捷使用方法,如下:

需求:查询出文档标题为 "中国功夫"且作者为"老汉"的所有文档

// 使用 Easy-Es
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
wrapper.eq(Document::getTitle, "中国功夫").eq(Document::getCreator, "老汉");
List<Document> documents = documentMapper.selectList(wrapper);
// 直接用RestHighLevelClient进行查询
String indexName = "document";
SearchRequest searchRequest = new SearchRequest(indexName);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
TermQueryBuilder titleTerm = QueryBuilders.termQuery("title", "中国功夫");
TermsQueryBuilder creatorTerm = QueryBuilders.termsQuery("creator", "老汉");
boolQueryBuilder.must(titleTerm);
boolQueryBuilder.must(creatorTerm);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);
searchRequest.source(searchSourceBuilder);
try {
 SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
 // 然后从searchResponse中通过各种方式解析出DocumentList 省略这些代码...
} catch (IOException e) {
    e.printStackTrace();
}

以上项目README上提供的简单查询例子,从代码量上可以直接看出该框架的简洁,如果在实际使用场景中,越复杂能节省的代码量只会就越多,按官方说法平均可节省3-5倍代码量。上述功能仅供演示,仅为 Easy-Es 支持功能的冰山一角,更多的深度使用,大家可以深入研究并投入使用。

开源支持

好的工具,就应该像女孩子的衣服_搜索_03

开源地址:

gitee.com/dromara/eas…

官网首页:

easy-es.cn/

从代码更新时间和频率上看,项目的活跃度很高,最新更新时间是在5天前。

由此可见,码农们接入easy-es,可谓优势多多:

  1. 简单易用高效,MyBatis-Plus用户懂的都懂,大把的时间节省出来。
  2. 使用门槛降低,就算是不懂Es的小白,也可以用EE开发各种功能
  3. 大幅减少代码量,提升代码可读性,降低重复代码量,提升代码质量
  4. 专业答疑团队,在使用过程中有任何问题都可以到项目里提交 issue
  5. 开发者承诺永久免费,不像国内大多数伪开源项目,大家都懂的

SpringBoot 集成示例

现在 SpringBoot 可以说是特别火的框架,很多大公司都在使用 SpringBoot 构建项目,所以 Easy-Es 提供了 SpringBoot 集成 Easy-Es 的 demo,使用者可以快速的从 demo 开始进行整合,可以在 easy-es.cn/#/demo进行查看。

指北君有话说

Easy-Es 可以在开发上为使用者大大地提高生产力,简洁的使用方法。感兴趣的小伙伴可以下载试用,如果在使用过程中有问题可以提交 issue。

关注公众号 [程序员了不起]回复[eee113] 即可获取navicat绿版

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
QHt7QJyNQUoA