Elasticsearch数据同步到关系型数据库[阿里云检索分析服务 Elasticsearch版]

Elasticsearch数据同步到关系型数据库

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 目前没有工具支持数据从elasticsearch迁移到其他数据库,但可以通过Elasticsearch支持的客户端语言(详见链接)将数据转换写入到其他数据库。

    提示: Logstash不支持output-jbdc插件,因此无法将数据写入到MySQL。

  2. https://help.aliyun.com/document_detail/69055.html?spm=a2c4g.11186623.6.576.3a3d266aXSMKBB 阿里云 logstash-input-jdbc 插件是实现阿里云 Elasticsearch 与 RDS 关系型数据库数据同步的关键,本质是通过 Logstash JDBC 输入插件,运行一个循环来定期对 RDS 进行轮询,从而找到在此次循环上次迭代后插入或更改的记录,如让其正确运行,必须满足如下条件:

    1、 在将 RDS 中的文档写入 Elasticsearch 时,Elasticsearch 中的 “_id” 字段必须设置为 RDS 中的 “id” 字段。这可在 RDS 记录与 Elasticsearch 文档之间建立一个直接映射关系,如果在 RDS 中更新了某条记录,那么将会在 Elasticsearch 中覆盖整条相关记录。

    注意,在 Elasticsearch 中覆盖文档的效率与更新操作的效率一样高,因为从内部原理上来讲,更新便包括删除旧文档以及随后对全新文档进行索引。

    2、在 RDS 中插入或者更新数据时,该记录必须有一个包含更新或插入时间的字段。通过此字段,便可允许 Logstash 仅请求获得在轮询循环的上次迭代后编辑或插入的文档,Logstash 每次对 RDS 进行轮询时,都会保存其从 RDS 所读取最后一条记录的更新或插入时间。在下一次迭代时,Logstash 便知道其仅需请求获得符合下列条件的记录:更新或插入时间晚于在轮询循环中的上一次迭代中所收到的最后一条记录。

    注意,Logstash-input-jdbc 插件无法实现“sql delete”操作,需要手动在 Elasticsearch 侧做删除。如果满足上述条件,我们便可配置 Logstash,以定期请求从 RDS 获得新增或已编辑的全部记录,然后将它们写入 Elasticsearch 中。