场景: - 我正在尝试将大型数据集从 Oracle DB(几百万条记录)导入 ElasticSearch。 - 我能够使用 logstash jdbc 输入插件导入数据。
问题: - 需要很长时间(5 小时)才能完成。
- 有没有更好的解决方案来减少这个时间? 这种情况下的良好做法?
最佳答案
您可以先使用 jdbc_fetch_size
,下一步将在多个节点上运行导入,对于每个节点,将 sql 查询拆分为不重叠的集合,例如 select * from XX where id between 0和 1000000
。
您还可以在索引 big bulk 之前将 ES 索引副本数设置为 0,然后再将其改回。当然,还可以使用具有良好批量大小和并行性的批量索引 API。
关于performance - Logstash-JDBC 插件 : Importing millions of records from Oracle to ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38061128/