elasticdump项目是 node 写的, 依赖 nodejs
前言
如果我们本地与生产环境没有专线,es数据就得导出成文件,再下载到本地,再导入到测试环境的es里。下面是一种导入导出的方法,使用elasticdump指令。
一、elasticdump 安装
npm install elasticdump -g
二、使用步骤
1.索引导出
代码如下(示例):
数据导出
elasticdump --input="http://remoteIp:9200/index" --output="/home/index.mapping.json" --type=mapping
elasticdump --input="http://remoteIp:9200/index" --output="/home/index.data.json" --type=data
2.把导出的文件下载到本地
代码如下(示例):
scp username@remoteIp/home/index.mapping.json .
scp username@remoteIp/home/index.data.json .
remoteIp是生产环境的机器ip。
3.再把线索导入到本地es
代码如下(示例):
elasticdump --output="http://localip:9200/index" --input="/home/user1/index.mapping.json" --type=mapping
elasticdump --output="http://localip:9200/index" --input="/home/user1/index.data.json" --type=data
localip是本地环境的机器ip。
4.还有一种方法,是限于要导出和导入的机器在一个网里
代码如下(示例):
# 备份 mapping
elasticdump --input="http://remoteIp:9200/MyIndex" --output="http://localip:9200/MyIndex" --type=mapping
# 备份数据
elasticdump --input="http://remoteIp:9200/MyIndex" --output="http://localip:9200/MyIndex" --type=data
或:
curl -XPOST 'localip:9200/_reindex?pretty' -d'
{
"source": {
"remote": {
"host": "http://remoteIp:9200"
},
"index": "MyIndex"
},
"dest": {
"index": "MyIndex"
}
}
localip是本地环境的机器ip。
5.主要参数说明
--input: 源地址,可为ES集群URL、文件或stdin,可指定索引,格式为:{protocol}:
--input-index: 源ES集群中的索引
--output: 目标地址,可为ES集群地址URL、文件或stdout,可指定索引,格式为:{protocol}:
--output-index: 目标ES集群的索引
--type: 迁移类型,默认为data,表明只迁移数据,可选settings, analyzer, data, mapping, alias
总结
如果数据量很大,localip和remoteIp又不在一个局限网里,导出、下载、导入这整个流程都会很慢。 最好是在一个局域网里,直接用es的api导入会飞快很多【即第4步里的第2种方式】。
|