9

将大数据从 Oracle DB 索引到弹性搜索集群的选项有哪些?要求是将 3 亿条记录一次索引到多个索引中,并且每天进行大约 100 万次更改的增量更新。

我已经尝试过 elasticsearch river/feeder的 JDBC 插件,两者似乎都在内部运行或需要本地运行的弹性搜索实例。请让我知道是否有任何更好的选择可以将弹性搜索索引器作为独立作业(可能基于 Java)运行。任何建议都会非常有帮助。谢谢。

4

2 回答 2

10

我们使用 ES 作为报告数据库,当新记录写入 SQL 时,我们采取以下操作将它们放入 ES:

  1. 将主键写入队列(我们使用rabbitMQ)
  2. Rabbit 拿起主键(当它有时间时)并查询关系数据库以获取它需要的信息,然后将数据写入 ES

这个过程非常有效,因为它同时处理新数据和旧数据。对于旧数据,只需编写一个快速脚本将 300M 主键写入 rabbit 即可!

于 2014-12-16T22:52:56.120 回答
5

有许多集成选项 - 我列出了一些给您一些想法,但解决方案实际上将取决于您的特定资源和要求。

  1. Oracle Golden Gate将查看 Oracle DB 事务日志并将它们实时提供给 ES。
  2. ETL 例如Oracle Data Integrator可以按计划运行并从您的数据库中提取数据,对其进行转换并发送到 ES。
  3. 在 Oracle DB 中创建触发器,以便可以使用存储过程将数据更新写入 ES。或者使用触发器将标志写入某个外部进程(例如 Java 应用程序)监视并用于从 Oracle DB 中提取数据的“更改”表。
  4. 获取写入 Oracle DB 的应用程序也为 ES 提供数据。理想情况下,您的应用程序和 Oracle DB 应该是松耦合的——您是否有一个可以将消息同时提供给 ES 和 Oracle 的集成平台?
于 2014-12-15T15:47:41.707 回答