可扩展的弹性搜索模块与弹簧数据弹性搜索可能吗



我正在设计一个可扩展服务(springboot(,使用它可以将数据索引到弹性搜索。

用例:

我的应用程序使用6个具有相同架构的数据库(mySql(。每个数据库都适合特定的地区
我有一个微服务,它连接到所有这些数据库,并以类似的方式将特定表中的数据索引到elasicsearch服务器(v6.8.8(,每个数据库有6个弹性搜索索引
Quartz jobs用于此目的,RestHighLevelClient用于此目的。此外,还有每秒运行的增量作业,用于使用审核和索引查找更改。

当前问题:

  1. 当前的设计是不可扩展的-一个服务完成所有工作(数据加载、映射、批量追加(。因为索引是通过quarts作业完成的,所以扩展服务(运行多个实例(将多次运行同一作业
  2. 无故障切换-寻找分布式弹性搜索节点并将数据索引到两个节点。如何有效地做到这一点

我正在考虑spring data elasticsearch在将数据持久化到数据库的同时对数据进行索引。

它提供所有功能吗?我使用:

  • Elasticsearch从安装模板到创建/删除索引、别名
  • 蓝色/绿色部署-索引到非活动节点并更改别名
  • 批量追加销售、查询、聚合。。等等

欢迎任何其他解决方案。谢谢你抽出时间。

您的一个用例是以可扩展的方式将数据从DB(Mysql(移动到ES。它基本上是一个CDC(变更数据捕获(管道。

您可以使用kafka-connect框架进行同样的操作。

流程应为:

  1. 读取Mysql事务日志=>将数据发布到Kafka(这可以使用Debezium Source Connector完成(
  2. 使用Kafka中的数据=>将其推送到弹性搜索(这可以使用ES-SYNC连接器完成(

为什么要使用该框架

  1. 使用connect框架数据可以直接从Mysql事务日志中读取,而无需编写代码
  2. Connect框架是一个分布式的&可扩展系统
  3. 它将减少数据库的负载,因为您现在不需要查询数据库来检测任何更改
  4. 易于设置

最新更新