elasticdump 是一个用于导入和导出 Elasticsearch 数据的命令行工具。它提供了一种方便的方式来在不同的Elasticsearch 实例之间传输数据,或者进行数据备份和恢复。 使用 elasticdump,可以将 Elasticsearch 索引中的数据导出为 JSON 文件,或者将 JSON 文件中的数据导入到 Elasticsearch 索引中。它支持各种选项和过滤器,用于指定源和目标,包括索引模式、文档类型、查询过滤器等等。 主要特征包括:
1. 支持在Elasticsearch实例或者集群之间传输和备份数据。
2. 可以将数据从一个集群复制到另一个集群。
3. 支持不同格式的数据传输,包括JSON、NDJSON、CSV、备份文件等。
4. 可以通过命令行或者程序化的方式使用。命令行方式提供了便捷的操作接口。 支持增量式同步,只复制目标集群中不存在的文档。
5. 支持多线程操作,可以加快数据迁移的速度
6. 支持各种认证方式连接Elasticsearch,如basic auth、Amazon IAM等。
先在一台外网服务器安装nodejs以及elasticdump
1. 安装nodejs
nodejs下载地址:https://nodejs.org/en/download/releases
解压并安装nodejs
解压nodejs安装包
tar xvf node-v10.13.0-linux-x64.tar.xz
配置环境变量
export PATH=$PATH:/usr/local/elastic-dump/node-v10.13.0-linux-x64/bin
确认安装成功:
[root@kaiyuan04 elastic-dump]# npm -v
6.4.1
[root@kaiyuan04 elastic-dump]# node -v
v10.13.0
2. 安装npm-pack-all npm-pack-all:用于打包npm库为.tgz文件,通过npm install -g npm-pack-all命令来安装
[root@kaiyuan04 bin]# npm install -g npm-pack-all
/usr/local/elastic-dump/node-v10.13.0-linux-x64/bin/npm-pack-all -> /usr/local/elastic-dump/node-v10.13.0-linux-x64/lib/node_modules/npm-pack-all/index.js
+ npm-pack-all@1.12.7
added 19 packages from 14 contributors in 6.511s
╭────────────────────────────────────────────────────────────────╮
│ │
│ New major version of npm available! 6.4.1 → 10.1.0 │
│ Changelog: https://github.com/npm/cli/releases/tag/v10.1.0 │
│ Run npm install -g npm to update! │
│ │
╰────────────────────────────────────────────────────────────────╯
3. 安装elasticdump 通过npm install -g elasticdump命令来安装
[root@kaiyuan04 bin]# npm install -g elasticdump
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated s3signed@0.1.0: This module is no longer maintained. It is provided as is.
/usr/local/elastic-dump/node-v10.13.0-linux-x64/bin/elasticdump -> /usr/local/elastic-dump/node-v10.13.0-linux-x64/lib/node_modules/elasticdump/bin/elasticdump
/usr/local/elastic-dump/node-v10.13.0-linux-x64/bin/multielasticdump -> /usr/local/elastic-dump/node-v10.13.0-linux-x64/lib/node_modules/elasticdump/bin/multielasticdump
+ elasticdump@6.103.1
added 128 packages from 200 contributors in 43.07s
4. 打包elasticdump 使用npm安装elasticdump时需要外网环境,我们需要在离线服务器使用时可以使用此方式打包并安装到离线服务器。
进入elasticdump目录
cd /usr/local/elastic-dump/node-v10.13.0-linux-x64/lib/node_modules/elasticdump
打包elasticdump目录
npm-pack-all
.------..------..------..------..------..------..------..------..------..------..------..------.
|N.--. ||P.--. ||M.--. ||-.--. ||P.--. ||A.--. ||C.--. ||K.--. ||-.--. ||A.--. ||L.--. ||L.--. |
| :(): || :/\: || (\/) || (\/) || :/\: || (\/) || :/\: || :/\: || (\/) || (\/) || :/\: || :/\: |
| ()() || (__) || :\/: || :\/: || (__) || :\/: || :\/: || :\/: || :\/: || :\/: || (__) || (__) |
| '--'N|| '--'P|| '--'M|| '--'-|| '--'P|| '--'A|| '--'C|| '--'K|| '--'-|| '--'A|| '--'L|| '--'L|
`------'`------'`------'`------'`------'`------'`------'`------'`------'`------'`------'`------'
CLI Args: {
"_": []
}
Saving existing package.json and lock files
Adding dependencies to bundledDependencies:
[
"@search-dump/jsonstream",
"async",
"aws-sdk",
"aws4",
"big.js",
"bytes",
"delay",
"extends-classes",
"fast-csv",
"http-status",
"ini",
"lodash",
"lossless-json",
"minimist",
"p-queue",
"request",
"requestretry",
"s3-stream-upload",
"s3urls",
"semver",
"socks5-http-client",
"socks5-https-client"
]
Packing source code and production dependencies...
npm notice
npm notice elasticdump@6.103.1
npm notice === Tarball Contents ===
npm notice 3.6kB package.json
npm notice 458B Dockerfile_local
npm notice 2.8kB elasticdump.js
npm notice 11.4kB LICENSE.txt
npm notice 39.6kB README.md
npm notice 4.6kB bin/elasticdump