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

brookepowell · March 03, 2021 · Last by yfractal replied at March 03, 2021 · 2551 hits

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


已找到导入工具: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 啊 再开多进程不就完了

Reply to liprais

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

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

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

Reply to zhuoerri

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

brookepowell closed this topic. 03 Mar 15:28
brookepowell reopened this topic. 03 Mar 15:28

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

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

Reply to zcxey2911

目前的同步方案是用的 logstash

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

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

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

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

You need to Sign in before reply, if you don't have an account, please Sign up first.