开发者社区 > 大数据与机器学习 > 检索分析服务 Elasticsearch版 > 正文

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

已解决

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

展开
收起
阿里云服务支持 2022-12-12 15:53:08 293 0
2 条回答
写回答
取消 提交回答
  • 推荐回答
    官方回答

    目前没有工具支持数据从elasticsearch迁移到其他数据库,但可以通过Elasticsearch支持的客户端语言(详见链接)将数据转换写入到其他数据库。

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

    2022-12-12 16:05:40
    赞同 展开评论 打赏
  • 网站:http://ixiancheng.cn/ 微信订阅号:小马哥学JAVA

    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 中。

    2022-12-12 16:21:42
    赞同 展开评论 打赏

阿里云检索分析服务Elasticsearch版兼容开源ELK功能,免运维全托管,提升企业数据检索与运维分析能力。

相关产品

  • 检索分析服务 Elasticsearch版
  • 热门讨论

    热门文章

    相关电子书

    更多
    阿里云Elasticsearch体系架构与特性解析 立即下载
    开源与云:Elasticsearch应用剖析 立即下载
    《Elasticsearch全观测解决方案》 立即下载