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
上一篇下一篇

猜你喜欢

热点阅读