将数据从Oracle /关系表索引到弹性搜索的更好方法是什么?

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

我已尝试过弹性搜索河/馈线的 JDBC插件,两者似乎都在内部运行或需要本地运行的弹性搜索实例。 如果有更好的选择将弹性搜索索引器作为一个独立的工作(可能是基于java的)运行,请告诉我。 任何建议都会非常有帮助。 谢谢。

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

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

此过程非常有效,因为它可以处理新数据和旧数据。 对于旧数据,只需编写一个快速脚本,将300M主键写入兔子,就完成了!

有很多集成选项 – 我已经列出了一些给你一些想法,解决方案实际上将取决于你的具体资源和要求。

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