0%

轻松搞定 Elasticsearch 数据迁移:Elasticdump 助你一臂之力

引言

本文将介绍一款用于迁移 Elasticsearch 数据的实用工具 —— elasticdump。它专为在不同 Elasticsearch 实例之间导出和导入数据而设计,非常适合小规模的数据迁移、备份以及测试等场景。

elasticdump

elasticdump简介

elasticdump 是一个命令行工具,主要用于将 Elasticsearch 的索引数据导出(dump)为 JSON 文件或从 JSON 文件导入到 Elasticsearch。它支持迁移 Mapping(映射)、Data(数据)。

GitHub 地址(官方文档):
https://github.com/elasticsearch-dump/elasticsearch-dump

安装方法

elasticdump 是一个基于 Node.js 的命令行工具,因此在安装时需要使用 npm 命令。

1
npm install elasticdump -g

具体使用

本节将通过一个具体示例,演示如何从 es1 实例中导出数据,并将其导入到 es2 实例中。

定义变量

1
2
es1_input="http://IP:PORT/index"
es2_output="http://IP:PORT/index"

步骤1: 从 es1 实例导出数据

导出列类型

1
2
3
4
elasticdump \
--input="${es1_input}" \
--output=./my_index_mapping.json \
--type=mapping

说明:在 Elasticsearch 中,导出”列类型”相当于导出数据库中的表结构。如果不迁移这些字段映射(mapping),Elasticsearch 会自动推断字段类型,这可能导致类型不准确,进而引发查询或索引异常。因此,建议在迁移数据时一并迁移字段映射,以确保数据结构的一致性。

导出数据

1
2
3
4
elasticdump \
--input="${es1_input}" \
--output=./my_index.json \
--type=data

说明1: 导出的数据是 jsonline 格式,一行一条,每条是一个 json 格式的数据。

说明2: 上述命令适用于 Linux 或 macOS 系统,使用 \ 作为续行符。如果你使用的是 Windows 操作系统,则在命令提示符(CMD)中执行命令时需要将续行符改为 ^

1
2
3
4
elasticdump ^
--input="${es1_input}" ^
--output=my_index.json ^
--type=data

步骤2: 将数据导入 es2 实例

导入列类型

1
2
3
4
elasticdump \
--input=my_index_mapping.json \
--output="${es2_output}" \
--type=mapping

细心的读者可能已经注意到,这里的 input 和 output 与步骤1中正好相反:此处的 input 是本地的 JSON 文件,而 output 则是 Elasticsearch 实例。

导入数据

1
2
3
4
elasticdump \
--input=my_index.json \
--output="${es2_output}" \
--type=data

总结

Elasticdump 是一款简单却功能强大的 Elasticsearch 数据迁移工具。通过几条简洁的命令,就可以轻松实现对 Elasticsearch 数据的导出与导入。无论是数据迁移、备份,还是测试,它都能成为你的得力助手。


微信端的朋友也可关注我的公众号

qrcode-12cm