当前位置: 首页 > article >正文

轻松迁移 Elasticsearch 数据:如何将自建索引导出并导入到另一个实例

概述

在日常的 Elasticsearch 运维和数据管理中,数据迁移是一个常见的需求。无论是为了备份、升级,还是将数据从一个集群迁移到另一个集群,导出和导入索引数据都是至关重要的操作。本文将详细介绍如何将自建 Elasticsearch 实例中的索引数据导出,并导入到另一实例的相同索引下。通过使用 elasticdump 工具,可以高效、准确地完成这一过程,实现数据的无缝迁移。

本文将详细介绍如何使用 elasticsearch-dump 工具进行 Elasticsearch 数据的导出和导入。

目录

1、什么是 elasticsearch-dump?

2、 安装 elasticsearch-dump

3、导出与导入Elasticsearch 数据

3.1 导出本地

3.1.1 导出索引数据

3.1.2 导出索引映射

3.2 导入实例

3.2.1 导入索引映射

 3.2.2 导入索引数据

3.3 从源集群导出数据到目标集群

4、验证数据导入

5、总结


1、什么是 elasticsearch-dump?

 elasticsearch-dump 是一个基于 Node.js 的命令行工具,专门用于导出和导入 Elasticsearch 数据。它支持将索引、映射、数据等从 Elasticsearch 导出为 JSON 文件,并且可以将这些 JSON 文件导入到另一个 Elasticsearch 实例中。适用于小到中规模的数据迁移,支持简单的导出和导入操作,适合快速迁移。

2、 安装 elasticsearch-dump

在使用 elasticsearch-dump 之前,我们需要先安装它。可以通过 npm(Node.js 的包管理器)来安装 elasticsearch-dump

npm install elasticdump -g

说明:默认下载走的npm官方源,安装较慢,这里设置成淘宝源进行下载,这样可以大幅提高安装包的速度,尤其是在中国大陆。

# 设置淘宝源
npm config set registry https://registry.npmmirror.com
# 确认当前使用的 npm 源
npm config get registry

## 如果返回的结果是 https://registry.npmmirror.com,说明已经成功切换到淘宝源。

如安装过程中报如下异常

npm ERR! Linux 3.10.0-1160.76.1.el7.x86_64
npm ERR! argv "/usr/local/node/bin/node" "/usr/local/node/bin/npm" "install" "elasticdump" "-g"
npm ERR! node v6.10.2
npm ERR! npm  v3.10.10

npm ERR! Unsupported URL Type: npm:@search-dump/jsonstream@^1.4.0
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /root/npm-debug.log  报错、

这个错误通常是由于你的 Node.js 和 npm 版本过低,导致它无法识别新的包的安装方式(例如:npm:@search-dump/jsonstream@^1.4.0)。解决这个问题的办法是升级 Node.js 和 npm

要解决这个问题,需要更新 Node.js 至至少 v10 版本,建议安装最新的稳定版 Node.js

解决步骤:

升级 Node.js 和 npm

这里我的 Node.js 版本是 v6.10.2,而 npm 版本是 v3.10.10,这两个版本都相对较旧。可以通过参考文章 nodejs 安装

确认 Node.js 和 npm 是否已成功更新

node -v  # 应该返回最新的 Node.js 版本
npm -v   # 应该返回最新的 npm 版本

安装完成后,可以通过以下命令检查是否安装成功:

elasticdump --help

如果看到帮助信息,说明安装成功。

3、导出与导入Elasticsearch 数据

假设我们有一个 Elasticsearch 实例运行在 http://source_elasticsearch:9200,并且有一个名为 your_index_name 的索引,我们希望将这个索引导出到一个 JSON 文件中。

3.1 导出本地

3.1.1 导出索引数据

 使用以下命令将 your_index_name索引的数据导出到 my_index_data.json 文件中:

elasticdump \
  --input=http://username:password@source_elasticsearch:9200/your_index_name \
  --output=your_index_data.json \
  --type=data

3.1.2 导出索引映射

除了数据,我们还需要导出索引的映射(mapping),以确保在导入时能够保持相同的结构。使用以下命令将 your_index_name 的映射导出到 your_index_mapping.json 文件中:

elasticdump \
  --input=http://username:password@source_elasticsearch:9200/your_index_name \
  --output=your_index_mapping.json \
  --type=mapping

3.2 导入实例

现在我们已经将索引的数据和映射导出为 JSON 文件,接下来我们将这些数据导入到另一个 Elasticsearch 实例中。假设新的 Elasticsearch 实例运行在 http://target_elasticsearch:9200

3.2.1 导入索引映射

首先,我们需要导入索引的映射。使用以下命令将 your_index_mapping.json 文件中的映射导入到新的 Elasticsearch 实例中:

elasticdump \
  --input=your_index_mapping.json \
  --output=http://username:password@target_elasticsearch:9200/your_index_name \
  --type=mapping

 3.2.2 导入索引数据

接下来,我们将 your_index_data.json 文件中的数据导入到新的 Elasticsearch 实例中:

elasticdump \
  --input=your_index_data.json \
  --output=http://username:password@target_elasticsearch:9200/your_index_name \
  --type=data

3.3 从源集群导出数据到目标集群

将数据从本地文件导入到目标 Elasticsearch 中的相同索引。

确保在运行 elasticdump 时提供了正确的 Elasticsearch 实例地址,并且该地址是有效的。假设在从源集群导出数据到目标集群,确保命令格式正确,类似如下:

elasticdump \
  --input=http://username:password@source_elasticsearch:9200/your_index_name \
  --output=http://username:password@target_elasticsearch:9200/your_index_name \
  --type=data

在使用 elasticdump 进行数据导入导出时,如果 Elasticsearch 实例启用了基本认证(需要用户名和密码),如上方式指定。这里,username password 应该替换为实际的 Elasticsearch 账号和密码。

确保以下几点:

  • http://source_elasticsearch:9200 http://target_elasticsearch:9200 这两个地址正确,且可以访问。
  • your_index_name 是实际存在的索引名称。

将数据从本地文件导入到目标 Elasticsearch 中的相同索引。

4、验证数据导入

导入完成后,我们可以通过以下命令验证数据是否成功导入:

curl -X GET -u username:password "http://target_elasticsearch:9200/your_index_name/_search?pretty"

如果返回的结果与原始索引中的数据一致,说明数据迁移成功。

5、总结

通过 elasticsearch-dump 工具,我们可以轻松地将 Elasticsearch 索引从一个实例导出并导入到另一个实例。无论是数据迁移、备份还是环境同步,elasticsearch-dump 都是一个非常实用的工具。希望本文能够帮助大家顺利完成 Elasticsearch 数据的迁移工作。


http://www.kler.cn/a/594718.html

相关文章:

  • hadoop集群配置-scp拓展使用
  • Redis如何保持变量访问的安全?
  • shell 脚本搭建apache
  • .NET 10 新的 JsonIgnoreCondition
  • 从“不敢买大”到“按墙选屏”,海信电视如何凭百吋重构客厅?
  • 【PCB工艺】基础:电子元器件
  • 科技云报到:AI Agent打了个响指,商业齿轮加速转动
  • 数据结构(python)-------栈和队列2
  • 【Ragflow】2. rag检索原理和效率解析
  • 私域电商的进化逻辑与技术赋能:基于开源AI大模型与S2B2C商城的创新融合研究
  • 深度学习pytorch笔记:TCN
  • Vs code搭建uniapp-vue项目
  • DAY35贪心算法Ⅳ 重叠区间问题
  • Java 大视界 -- Java 大数据在智能政务舆情引导与公共危机管理中的应用(138)
  • Flask 模版引擎的语法
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(10)
  • Redis 在windows下的下载安装与配置
  • 医院信息系统平台总体架构原则
  • 创造型设计模式
  • canvas数据标注功能简单实现:矩形、圆形