Easy-Es
(简称 EE) 是一个基于ElasticSearch
官方提供的RestHighLevelClient
开发的高效ORM
框架。它在保留原生功能的基础上进行了优化,旨在简化开发流程,提高代码效率。对于熟悉MyBatis-Plus
(简称 MP) 的开发者来说,Easy-Es
提供了类似的开发体验,几乎可以零学习成本快速上手。实际上,Easy-Es
不仅在功能上与 MP 相似,还融合了ElasticSearch
的核心特性,在性能优化和灵活性上更胜一筹。
作为分布式搜索引擎的标杆,ElasticSearch
凭借其出色的性能成为处理海量数据的首选方案。无论是千万级还是百亿级数据的存储与检索,ElasticSearch
都能在秒级内返回精准的查询结果,这在传统关系型数据库中是难以实现的。
ElasticSearch
的主要优势包括:
– 高并发能力:支持大规模分布式搜索,性能卓越。
– 灵活的全文检索:强大的分词和排序功能,满足复杂查询场景。
– 实时性:数据更新后能够快速同步到查询结果。
– 丰富的扩展功能:支持聚合分析、监控与告警等多种场景。
通过整合 Easy-Es
,我们可以轻松地为若依系统赋能,快速实现大规模数据的高效检索与管理。以下为具体实现步骤:
application.yml
在项目的配置文件中添加 Easy-Es
的相关配置:
# Easy-Es 配置项
easy-es:
enable: true # 是否开启 Easy-Es 自动配置
address: es-na9iqtzt.public.tencentelasticsearch.com:9200 # ES 服务地址
schema: https # 协议类型,支持 http 或 https
username: elastic # 用户名
password: 你的密码 # 密码
global-config:
print-dsl: true # 是否在控制台打印生成的 DSL 语句
id-type: customize # 主键生成策略,支持自定义
refresh-policy: immediate # 数据刷新策略
在 pom.xml
文件中添加 Easy-Es
的 Maven 依赖:
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
创建文章实体类,用于映射 ElasticSearch
索引:
@IndexName("es_article")
@Data
public class EsArticle implements Serializable {
@IndexId(type = IdType.CUSTOMIZE) // 自定义主键
private String id;
@IndexField(fieldType = FieldType.KEYWORD)
private Long articleId;
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
private String title;
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
private String categoryName;
@IndexField(fieldType = FieldType.KEYWORD)
private Long readNum;
@IndexField(fieldType = FieldType.KEYWORD)
private Long likeNum;
@IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
}
定义 Mapper
接口来操作索引:
@EsMapperScan("com.ruoyi.es.mapper")
public interface DocumentMapper extends BaseEsMapper<EsArticle> {
}
在控制器中编写测试方法,用于验证数据插入和分页查询功能:
@RestController
@RequiredArgsConstructor
public class EsController {
private final DocumentMapper documentMapper;
@GetMapping("/es/insert")
public Integer insertTestData(int n) {
List<Article> articles = fetchArticles(n); // 假设 fetchArticles 方法获取文章数据
List<EsArticle> esArticles = articles.stream()
.map(this::convertToEsArticle)
.collect(Collectors.toList());
documentMapper.insertBatch(esArticles);
return esArticles.size();
}
@GetMapping("/es/search")
public EsPageInfo<EsArticle> search(String keyword, int page) {
LambdaEsQueryWrapper<EsArticle> query = new LambdaEsQueryWrapper<>();
query.like(EsArticle::getTitle, keyword)
.or()
.like(EsArticle::getCategoryName, keyword);
return documentMapper.pageQuery(query, page, 10);
}
}
/es/insert
接口插入测试数据,比如 10000 条文章记录。
查询测试
通过 /es/search
接口进行关键词搜索,验证分页查询功能,查询响应迅速,轻松应对大数据量场景。
在 ES 中验证数据
通过 ElasticSearch
的管理工具,查看已插入的数据及其结构,确保数据准确。
整合 Easy-Es
后,若依系统能够无缝支持 ElasticSearch
,实现高性能的大规模数据操作。这种方式不仅显著提升了开发效率,还大大降低了操作 ElasticSearch
的复杂性。
如果想进一步深入了解 Easy-Es
的使用方法及高级功能,建议参考 [Easy-Es 官方文档]:
https://www.easy-es.cn/。
powered by kaifamiao