将数据从Oracle /关系表索引到弹性搜索的更好方法是什么?
将大数据从Oracle DB索引到弹性搜索集群有哪些选项? 要求是将300Million记录一次索引到多个索引中,并且每天还有大约100万次更改的增量更新。
我已尝试过弹性搜索河/馈线的 JDBC插件,两者似乎都在内部运行或需要本地运行的弹性搜索实例。 如果有更好的选择将弹性搜索索引器作为一个独立的工作(可能是基于java的)运行,请告诉我。 任何建议都会非常有帮助。 谢谢。
我们使用ES作为报告数据库,当新记录写入SQL时,我们采取以下操作将它们引入ES:
- 将主键写入队列(我们使用rabbitMQ)
- Rabbit获取主键(当它有时间时)并查询关系DB以获取所需的信息,然后将数据写入ES
此过程非常有效,因为它可以处理新数据和旧数据。 对于旧数据,只需编写一个快速脚本,将300M主键写入兔子,就完成了!
有很多集成选项 – 我已经列出了一些给你一些想法,解决方案实际上将取决于你的具体资源和要求。
- Oracle Golden Gate将查看Oracle数据库事务日志并将其实时提供给ES。
- ETL例如Oracle Data Integrator可以按计划运行,从数据库中提取数据,转换数据并发送给ES。
- 在Oracle DB中创建触发器,以便可以使用存储过程将数据更新写入ES。 或者使用触发器将标志写入“更改”表,某些外部进程(例如Java应用程序)监视并使用该表来从Oracle DB中提取数据。
- 获取写入Oracle DB的应用程序也可以提供ES。 理想情况下,您的应用程序和Oracle DB应该松散耦合 – 您是否有可以将消息提供给ES和Oracle的集成平台?
- 使用java api在Elasticsearch中创建索引和添加映射会丢失分析器错误
- 如何在Spring-data-elasticsearch中启用查询日志记录
- 使用Java API从Elasticsearch获取所有记录
- Elasticsearch – EdgeNgram + highlight + term_vector =错误的亮点
- 在ElasticSearch中获取SearchResponse的结果
- 使用Apache HttpComponents Client签署AWS HTTP请求
- 弹性搜索java.lang.NoClassDefFoundError:org / elasticsearch / transport / Netty3Plugin
- Elasticsearch:在测试类路径中发现jar地狱
- elasticsearch NodeBuilder与TranportClient