14

我想将 Elasticsearch 索引与 SQL 数据库的内容同步。Elasticsearch JDBC River 满足我的所有要求,但在文档中说该插件已弃用。

我不想使用在接下来的几年中不受支持的工具。有哪些替代方案?

在河流的文档中,它说:

注意,JDBC 插件不仅是一条河流,还是一个独立的模块。因为 Elasticsearch River API 已被弃用,所以这是一个重要功能。

为什么它是一个重要的功能?这是否意味着尽管被弃用,我仍然可以无限期地使用它,例如使用馈线而不是河流?

4

2 回答 2

14

一些替代方案:

  • 在Elasticsearch 2.0 版本之前,河流仍然可以使用。但这不是一个长期的解决方案。
  • 正如 plmaheu 所说,您可以编写自己的解决方案。这是一些工作,但会完美地适合您的程序,并在Elasticsearch 博客上推荐。
  • 您可以将插入/更新/删除请求发送到 Logstash ,而不是编写自定义代码日志,这将使它们出现在 Elasticsearch 上。我喜欢这个解决方案,因为 Logstash 会为您批量处理并处理您不想自己实现的其他事情。
  • 我听说您可以使用Talend之类的 ETl 工具,但我没有研究该解决方案,因为它是付费解决方案。
  • 有一个收集器插件应该取代河流。然而,它自去年以来一直没有更新,因此该项目很可能已被放弃。

ES 博客上推荐的两种解决方案是编写您的解决方案或使用 Logstash。选择符合您要求的一种。

注意:目前正在开发很多很棒的解决方案来替换河流,以logstash-jdbc输入为例。河流的弃用是最近才出现的,可以预期在接下来的几个月/几年中会出现许多替代品。

于 2015-04-20T12:01:34.030 回答
1

你自己写可能会更好。Rivers 没有那么多功能,您很可能需要对数据访问进行更细粒度的控制,而不是 Rivers 所允许的。您需要 2 个高级组件:

  • 从 SQL 服务器获取数据并将其发送到 ElasticSearch 的可执行工具。
  • 调度程序,使工具以您需要的时间间隔运行。
于 2015-04-17T17:44:42.717 回答