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 查看
版权归原作者 dudu_1234567 所有, 如有侵权,请联系我们删除。