ElasticDump是一个ElasticSearch的数据导入导出开源工具包,方便使用。
官方地址:官方地址:https://github.com/taskrabbit/elasticsearch-dump
注意:在迁移前需要将索引提前创建完成,直接迁移会导致索引无法正常使用
ElasticDump依赖NodeJs环境,首先安装NodeJs
[root@node1 nodejs]# wget https://npm.taobao.org/mirrors/node/v10.15.3/node-v10.15.3-linux-x64.tar.gz
下载NodeJs安装包,解压NodeJs
[root@node1 nodejs]# tar -zxf node-v10.15.3-linux-x64.tar.gz
使用ln -s 软连接命令,设置NodeJs环境
[root@node1 nodejs]# ln -s /home/console/nodejs/bin/node /usr/local/bin/
[root@node1 nodejs]# ln -s /home/console/nodejs/bin/npm /usr/local/bin/
[root@node1 nodejs]# node --version
v10.15.3
[root@node1 nodejs]#
设置完NodeJs环境,下载elasticdump
[root@node1 nodejs]# pwd
/home/console/nodejs
[root@node1 nodejs]# npm install elasticdump -g
#elasticdump安装完成目录
[root@node1 nodejs]# ls /home/console/nodejs/lib/node_modules/elasticdump/bin/elasticdump
/home/console/nodejs/lib/node_modules/elasticdump/bin/elasticdump
[root@node1 nodejs]# cd /home/console/nodejs/lib/node_modules/elasticdump/bin
[root@node1 bin]# pwd
/home/console/nodejs/lib/node_modules/elasticdump/bin
[root@node1 bin]# ll
总用量 20
-rwxr-xr-x 1 root root 3561 10月 26 1985 elasticdump
-rwxr-xr-x 1 root root 13012 10月 26 1985 multielasticdump
使用ln -s 软连接命令,设置elasticdump环境
ln -s /home/console/nodejs/lib/node_modules/elasticdump/bin/elasticdump /usr/bin/
设置完环境,使用elasticdump --help命令,查看elasticdump 安装是否成功
image.png
1 . 主要参数说明
--input: 源地址,可为ES集群URL、文件或stdin,可指定索引,格式为:{protocol}://{host}:{port}/{index}
--input-index: 源ES集群中的索引
--output: 目标地址,可为ES集群地址URL、文件或stdout,可指定索引,格式为:{protocol}://{host}:{port}/{index}
--output-index: 目标ES集群的索引
--type: 迁移类型,默认为data,表明只迁移数据,可选settings, analyzer, data, mapping, alias
2 . 迁移单个索引
以下操作通过elasticdump命令将集群172.16.0.39中的companydatabase索引迁移至集群172.16.0.20。注意第一条命令先将索引的settings先迁移,如果直接迁移mapping或者data将失去原有集群中索引的配置信息如分片数量和副本数量等,当然也可以直接在目标集群中将索引创建完毕后再同步mapping与data
elasticdump --input=http://172.16.0.39:9200/companydatabase --output=http://172.16.0.20:9200/companydatabase --type=settings
elasticdump --input=http://172.16.0.39:9200/companydatabase --output=http://172.16.0.20:9200/companydatabase --type=mapping
elasticdump --input=http://172.16.0.39:9200/companydatabase --output=http://172.16.0.20:9200/companydatabase --type=data
3 . 迁移所有索引:以下操作通过elasticdump命令将将集群172.16.0.39中的所有索引迁移至集群172.16.0.20。 注意此操作并不能迁移索引的配置如分片数量和副本数量,必须对每个索引单独进行配置的迁移,或者直接在目标集群中将索引创建完毕后再迁移数据
elasticdump --input=http://172.16.0.39:9200 --output=http://172.16.0.20:9200
elasticdump迁移elasticsearch数据摘抄自bellengao博客