如何通过Logstash同步多表关联数据至Elasticsearch

本文介绍了如何通过Logstash同步多表关联数据至Elasticsearch,强调了数据库表的约定原则,如主键、最近变更时间和软删除标记字段,并提出了将多表关联视为视图,利用SQL视图简化同步过程的方法。通过各表ID的组合作为Elasticsearch文档的_id以实现幂等性,并详细说明了增量数据的识别和软删除处理。
摘要由CSDN通过智能技术生成
如果你对  使用Logstash保持Elasticsearch与数据库同步 方案还不是很熟悉,建议先花点时间精读它。
上面的文章以单表同步场景为例,清楚讲述了如何通过JDBC同步数据至ES,而对于实际开发中经常出现的多表关联同步并未提及,以下是我针对多表关联同步的趟坑过程希望对你有所帮助。

数据库表的约定原则

同步单表时我们对于表字段的约定:

  • 表中要有主键字段(如id),最近变更时间字段(如modification_time),软删除标记字段(如is_deleted),以便jdbc-input数据采集的轮询Job可以识别出增量变动的数据。
  • 提示:jdbc input轮询需要基于modification_time条件查询,所以给该字段加上索引。

多表关联同步方案

多表关联的情况下我们需要JOIN其他表查询得到结果,这个结果就是ES需要的打平后的宽表。ES新的版本中也增加了join操作,但这事不是ES擅长的,我们选择交给更擅长的数据库处理,让ES只存储打平后的单层索引。

如果你理解单表同步而困惑多表关联同步的话,试着将关联查询的复杂SQL想象(定义)为视图,是不是后续操作就跟单表没区别了!

我们来逐个看下多表关联的同步问题 (假设表a多对多关联表b):

  • 单表的id字段绑定到ES document的_id,可以实现ES索引幂等性,不会出现j

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值