数据库 超过 1 千万条数据,如何快速从 mysql 导入到 elasticsearch 中?

brookepowell · 2021年03月03日 · 最后由 yfractal 回复于 2021年03月03日 · 2671 次阅读

如题,有开源解决方案更好,希望知道的朋友推荐一下,谢谢。


已找到导入工具:abc

只需要执行一条命令:abc import --src_type=mysql --src_uri="USER:PASS@tcp(HOST:PORT)/DBNAME" "https://USER:PASS@ES_HOST:PORT/INDEX_NAME"

即可导入,速度非常快,1000 万条数据导入用了不到 10 分钟。

es 可以 batch update 啊 再开多进程不就完了

liprais 回复

谢谢回复,你说的似乎是要自己写代码来导入,请问有没有现成的工具?配置一下就可以进行导入。

我是用 searchkick 这个 gem 操作 ES 的。可以 异步 地把任务放 sidekiq 里执行来 reindex

https://github.com/ankane/searchkick#parallel-reindexing

zhuoerri 回复

用这个 gem 还需要建立 model,创建项目,挺重的。我只是想把数据全量导入 es

brookepowell 关闭了讨论。 03月03日 15:28
brookepowell 重新开启了讨论。 03月03日 15:28

你好,软件可以考虑使用 https://www.elastic.co/cn/logstash

但是其实写个 rb 脚本,开多任务跑一下也花不了多长时间吧。。。

zcxey2911 回复

目前的同步方案是用的 logstash

有 es bulk inser,写个脚本就可以搞。

每秒 2000,一个多小时就能写完一千万的数据。

数据库也还好,都是连续性的读。

要想稳妥点,开始可以慢点。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号