我在工作中曾遇到ES服务器变更,需要将现服务器上的所有索引库导到新服务器上。
一种解决方案是,写一段Java程序,将数据库中的数据查询出来,重新全部导入新的索引库,因为一般索引库的数据来源于数据库。
但是,如果索引库数据是经过加工的才存储的,和数据库不一样呢?此时就需要完整将旧索引库的数据整体迁移到新索引库。
一、Linux下安装Node.js
使elasticdump工具,需要用npm,因此Linux下没有node.js需要安装
1、官网(http://nodejs.cn/download/)下载【Linux 二进制文件 (x64)】
2、上传node-v10.16.0-linux-x64.tar.xz到/usr/node目录下
3、tar -zxvf node-v10.16.0-linux-x64.tar.xz 解压
4、编译安装
[root@i-xxx ~] cd /usr/node/node-v10.16.0-linux-x64/
[root@node-v10.16.0-linux-x64] ./configure --prefix=/usr/node/node-v10.16.0-linux-x64/
[root@node-v10.16.0-linux-x64] make
[root@node-v10.16.0-linux-x64] make install
5、配置环境变量
vim /etc/profile
#在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容
#set for nodejs
export NODE_HOME=/usr/node/node-v10.16.0-linux-x64/
export PATH=$NODE_HOME/bin:$PATH
#:wq保存并退出,编译/etc/profile 使配置生效
source /etc/profile
#验证是否安装配置成功
node -v
二、安装elasticdump
1、在/usr/soft/elasticsearch目录下新建一个estools文件夹
[root@i-xxx ~] cd /usr/soft/elasticsearch
[root@elasticsearch] mkdir estools
2、安装
[root@elasticsearch] cd ./estools
[root@estools] npm install elasticdump
3、拷贝数据命令
./elasticdump --input=http://192.168.1.225:9200/cpnews --output=http://192.168.58.4:9200/news --type=data --maxSockets=5
注意:执行上面命令是将192.168.1.225服务器上的cpnews索引数据拷贝到192.168.58.4服务器上,192.168.58.4上会新增一个索引叫news,不需要提前在 192.168.58.4上新增索引,如果新增此操作会报错。
网友评论