es 索引迁移工具Elasticdump 安装及使用

Elasticdump是一个命令行工具,可用于将数据从Elasticsearch导出到JSON文件,以及将JSON文件导入到Elasticsearch中。以下是一个简单的示例,演示如何使用Elasticdump实现数据导入导出。
准备工作
elasticdump 工具是node.js开发,依赖此环境,需要先安装 npm 命令。下载二进制包,安装 npm、node命令如下:
**第一步 node下载**
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz (也可离线下载传输,node版本不能低于v10)
**第二步 安装及环境变量配置**
解压安装压缩包,解压命令如下
xz -d node-v10.13.0-linux-x64.tar.xz 
移动目录(路径可自行选择)
tar xvf node-v10.13.0-linux-x64.tar -C /usr/lib/
添加环境变量
打开 /etc/profile 添加以下环境变量,命令如下

vim /etc/profile
添加环境变量如下

export NODE_HOME=/usr/lib/node-v10.13.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
加载环境变量
/etc/profile
测试是否生效


**第三步 安装elasticdump工具**
npm install elasticdump -g  #(-g为设置全局命令)
查看是否安装成功
elasticdump --version

 
**第四步 elasticdump 导出**
--es导出索引结构
elasticdump --input=http://用户名:密码@ip:端口/索引名称 --output=D:\es\date\project-card-template_mapping.json --type=mapping
--es 导出索引数据
elasticdump --input=http://用户名:密码@ip:端口/索引名称 --output=D:\es\date\project-card-template.json --type=data
--es 导入
--创建索引(索引已存在无需创建)
$ curl -XPUT http://用户名:密码@ip:端口/索引名称
--因为导入的是mapping,所以设置type为mapping
$ elasticdump --input D:\es\date\project-card-template_mapping.json --output http://用户名:密码@ip:端口/索引名称 --type=mapping
#因为导入的是data(真实数据)所以设置type为data
$ elasticdump --input D:\es\date\project-card-template.json --output http://用户名:密码@ip:端口/索引名称 --type=data
**使用时遇到的坑**
1.例如elastic:elastic#2022 用户名、密码 含有# % 等会被转义 出现如下错误,有特殊符号需提前转义,出现如下错误

2.直接导出大数bigint,json会四舍五入
比如 organizationId=1402571331202973696
会被改成 organizationId=1402571331202973700
这个迁移会导致数据有问题 

解决方案
在导出命令时加上两个参数
--support-big-int 支持大数类型
--big-int-fields 指定支持的字段,默认是''(default '')
例子:
elasticdump --input D:\es\date\project-card-template.json --output http://用户名:密码@ip:端口/索引名称 --type=data --type=data --support-big-int --big-int-fields='id,templateId'
4.elasticdump 常用命令查看及介绍
--input: 指定输入的源 Elasticsearch 实例或JSON文件;

--output:指定输出的目标 Elasticsearch实例或JSON文件;

--type:指定要操作的数据类型,包括index、alias、template、data analyzers等;

--searchBody:对于输入为Elasticsearch实例时,指定一个JSON对
象作为查询参数;

--limit:限制导出的文档数。默认情况下,它会导出所有文档

--inputIndex:指定输入源 Elasticsearch实例的索引名称;

--ignore-errors:忽略出错的文档,继续导出其余文档。

--scrollTime:设置scroll时间,以毫秒为单位。默认为10分钟。

--timeout:设置请求超时时间,以毫秒为单位。默认为30秒。

--support-big-int 支持大数类型

--big-int-fields 指定支持的字段,默认是''(default '')

--bulk-1imit:设置批量操作中的文档数量限制默认为1000
完整命令手册可以通过 elasticdump --help 查看

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值