官网:elasticdump - npm
ElasticDump是一个ElasticSearch的数据导入导出开源工具包,方便使用。
官方地址:官方地址:https://github.com/taskrabbit/elasticsearch-dump
一. 安装npm,node
# 下载安装包
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz# 解压
xz -d node-v10.13.0-linux-x64.tar.xz tar xvf node-v10.13.0-linux-x64.tar# 建立文件软连接到系统命令
ln -s /root/node-v10.13.0-linux-x64/bin/node /usr/bin/node
ln -s /root/node-v10.13.0-linux-x64/bin/npm /usr/bin/npm# 检查是否安装成功
node -v
npm -v
二. 安装elasticdump
2.1 在线安装
# 安装
npm install elasticdump -g# 建立文件软连接到系统命令
ln -s /root/node-v10.13.0-linux-x64/lib/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump# 验证
elasticdump --help
2.2 离线安装
在同样的系统版本有网络的服务器下生成模块elasticdump缓存(安装同上2.1)
2.2.1 模块缓存导出
# 查看缓存目录位置 npm config get cache
cd /root/.npm/
# 压缩缓存,并拷贝到待安装机器
tar -cf npm-cache.tar .npm
2.2.2 模块缓存导入安装
# 解压
tar -xvf npm-cache.tar
# 进入node下的lib目录执行安装命令
cd /root/node-v10.13.0-linux-x64/lib
npm install --cache /root/.npm --optional --cache-min 99999999999 --shrinkwrap false elasticdump
# 建立文件软连接到系统命令,如果elasticdump不在这个目录下,可以使用一下命令查找find / -name 'elasticdump'
ln -s /root/node-v10.13.0-linux-x64/lib/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump
# 验证
elasticdump --help
三. 数据备份,还原,迁移
# 备份
elasticdump --input=http://192.168.1.2:9200/test --output=/opt/esdump/test.json
# 支持星号匹配,以test开头的所有索引数据导出到test.json文件
elasticdump --input=http://192.168.1.2:9200/test* --output=/opt/esdump/test.json# 还原
./elasticdump --input=/opt/esdump/test.json --output=http://192.168.1.3:9200/test# 还原,不需要指定索引自动插入
./elasticdump --input=/opt/esdump/test.json --output=http://192.168.1.3:9200# 迁移
./elasticdump --input=http://192.168.1.2:9200/test --output=http:/192.168.1.3:9200/test# 带账号密码的数据迁移
./elasticdump --input=http://username:password@192.168.1.2:9200/test --output=http://username@password@192.168.1.3:9200/test# 导出Mapping信息
./elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.10.20.164:9200/xmonitor-2015.04.29 --output=http://192.168.100.72:9200/xmonitor-prd-2015.04.29 --type=mapping# 根据查询条件导出nohup elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.248.161.31:9200/ams_data --output=/usr/elasticsearch/output_datas_data_week0708_0714.json --type=data --searchBody '{"query":{"bool":{"must":{"range":{"created_at":{"from":"2017-07-08 00:00:00","to":"2017-07-14 23:59:59","format":"yyyy-MM-dd HH:mm:ss","include_lower":true,"include_upper":true}}}}}}' >/usr/elasticsearch/output_data/result5.log &
参数说明:
--limit 10000 每次查询导出数据大小,可以提升导出性能,不设置默认为100