CentOS7安装并使用ElasticDump——ES的数据迁移
2020-04-24 本文已影响0人
李小二的倔强
环境准备:
Centos7版本:7.3
es版本:6.4.3
node版本:8.15.0
步骤:
1.首先需要安装node环境
wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.gz
2.创建node的存放位置的文件夹,这里将node放在/usr/local目录下
[root@centos7 pid]# mkdir node
[root@centos7 pid]# mv node-v10.15.0-linux-x64.tar.gz ./node
3.解压node-v10.15.0-linux-x64.tar.gz
[root@centos7 node]# tar -xzvf node-v10.15.0-linux-x64.tar.gz
4.配置环境变量,以便于全局使用
[root@centos7 node]# vim /etc/profile
加入以下内容,执行source /etc/profile 生效
export NODE_HOME=/usr/local/pid/node/node-v10.15.0-linux-x64.tar.gz
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
5.验证node和npm
node -v
npm -v
[root@centos7 pid]# node -v
v8.15.0
[root@centos7 pid]# npm -v
6.4.1
[root@centos7 pid]#
6.安装ElasticDump
[root@centos7 pid]# npm install elasticdump -g
7.测试elasticdump是否安装成功
[root@centos7 pid]# elasticdump --version
6.27.3
[root@centos7 pid]#
8.使用方式
#使用方法
[root@centos7 pid]# elasticdump --help
#例子
Examples:
# Copy an index from production to staging with mappings:
#使用映射将索引从生产复制到登台:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=mapping
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=data
# Backup index data to a file:
#将索引数据备份到文件:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index_mapping.json \
--type=mapping
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index.json \
--type=data
# Backup and index to a gzip using stdout:
#使用stdout备份并索引到gzip:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=$ \
| gzip > /data/my_index.json.gz
# Backup the results of a query to a file
#将查询结果备份到文件
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=query.json \
--searchBody '{"query":{"term":{"username": "admin"}}}'
如果报以下错误是因为node版本太低,装个高版本的node
internal/util.js:214
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function');
^
TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type function
at Object.promisify (internal/util.js:214:11)
at Object.<anonymous> (/home/cct/node/node-v8.15.0-linux-x64/lib/node_modules/elasticdump/lib/transports/file.js:9:28)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at getIo (/home/cct/node/node-v8.15.0-linux-x64/lib/node_modules/elasticdump/lib/ioHelper.js:35:18)
将ES数据导出成file
#将索引数据备份到文件:
[root@centos7 pid]# elasticdump --input=http://10.0.88.175:9200/odc_index --output=/usr/local/pid/odc_index_mapping.json --type=mapping
[root@centos7 pid]# elasticdump --input=http://10.0.88.175:9200/odc_index --output=/usr/local/pid/odc_index.json --type=data
[root@centos7 pid]# elasticdump --input=http://10.0.88.175:9200/pid_index --output=/usr/local/pid/pid_index_mapping.json --type=mapping
[root@centos7 pid]# elasticdump --input=http://10.0.88.175:9200/pid_index --output=/usr/local/pid/pid_index.json --type=data
#将数据文件到索引库:
[root@centos7 pid]# elasticdump --input=/usr/local/pid/odc_index_mapping.json --output=http://10.0.88.175:9200/odc_index --type=mapping
[root@centos7 pid]# elasticdump --input=/usr/local/pid/odc_index.json --output=http://10.0.88.175:9200/odc_index --type=data
[root@centos7 pid]# elasticdump --input=/usr/local/pid/pid_index_mapping.json --output=http://10.0.88.175:9200/pid_index --type=mapping
[root@centos7 pid]# elasticdump --input=/usr/local/pid/pid_index.json --output=http://10.0.88.175:9200/pid_index --type=data