官网:https://www.npmjs.com/package/elasticdump

elasticdump 简介

用于转移和保存ES索引数据

1 前置条件

elasticdump具有两种两种方式:npm和Docker(假设已存在对应的安装环境,可直接跳转至安装elasticdump步骤),本文只讲述docker的安装和使用方式,npm的安装方式可以查阅官网文档细节或者网上查询资料https://www.jianshu.com/p/bcd17c7affab

2 下载镜像

docker pull elasticdump/elasticsearch-dump

3 导出操作

3.1 导出mapping数据

docker run --network elk_test_default --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \
  --input=http://elasticsearch:9200/localdeployment-server-doc/ \
  --output=/tmp/mapping.json \
  --type=mapping

3.2 导出data数据

docker run --net=host --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \
  --input=http://localhost:8060/localdeployment-server-doc \
  --output=/tmp/data.json \
  --type=data

3.3 参数解释

–net=host:连接宿主机网络
–network: 加入已经存在的网络(需要使用docker network ls查看已存在的网络)
–rm: 执行完命令即删除
-ti: 交互运行
-v: 映射数据
-d: 后台运行,使用-d就可以不使用-it,也可以使用,使用-d时可以使用docker logs -f 查看运行日志

3.4 操作日志

Thu, 20 Jan 2022 02:13:22 GMT | got 100 objects from source elasticsearch (offset: 100)
Thu, 20 Jan 2022 02:13:22 GMT | sent 100 objects to destination file, wrote 100
...
Thu, 20 Jan 2022 02:25:03 GMT | got 100 objects from source elasticsearch (offset: 70100)
Thu, 20 Jan 2022 02:25:03 GMT | sent 100 objects to destination file, wrote 100
Thu, 20 Jan 2022 02:25:03 GMT | got 25 objects from source elasticsearch (offset: 70200)
Thu, 20 Jan 2022 02:25:03 GMT | sent 25 objects to destination file, wrote 25
Thu, 20 Jan 2022 02:25:03 GMT | got 0 objects from source elasticsearch (offset: 70225)
Thu, 20 Jan 2022 02:25:03 GMT | Total Writes: 70225
Thu, 20 Jan 2022 02:25:03 GMT | dump complete

3.5结论

读取速度比较慢 7w条数据,26M,执行12分钟

4 导入操作

4.1 导入mapping数据

docker run --net=host --rm -ti -v /docker-compose-registry/elk7.16.3/data:/tmp  elasticdump/elasticsearch-dump \
--input=/tmp/mapping.json \
--output=http://localhost:9200/localdeployment-server-doc \
--type=mapping

4.2 导入data数据

docker run --net=host --rm -ti -v /docker-compose-registry/elk7.16.3/data:/tmp elasticdump/elasticsearch-dump \
--input=/tmp/data.json \
--output=http://localhost:9200/localdeployment-server-doc \
--type=data

4.3 操作日志

Thu, 20 Jan 2022 07:23:03 GMT | starting dump
Thu, 20 Jan 2022 07:23:03 GMT | got 100 objects from source file (offset: 0)
Thu, 20 Jan 2022 07:23:03 GMT | sent 100 objects to destination elasticsearch, wrote 100
Thu, 20 Jan 2022 07:23:03 GMT | got 100 objects from source file (offset: 100)
...
Thu, 20 Jan 2022 07:34:44 GMT | sent 25 objects to destination elasticsearch, wrote 25
Thu, 20 Jan 2022 07:34:44 GMT | Total Writes: 70225
Thu, 20 Jan 2022 07:34:44 GMT | dump complete
Thu, 20 Jan 2022 07:34:44 GMT | got 0 objects from source file (offset: 70225)

4.4 结论

读入速度比较慢 7w条数据,执行11分钟

5 注意事项

如果导入导出数据时,es是需要密码认证的,则input和output应该这么写

--input=http://name:pwd@production.es.com:9200/my_index

如果密码包含@等特殊字符
--output=http://name:'pwd'@localhost:9200/localdeployment-server-doc
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐