ELasticSearch数据迁移方案-elasticdump

前言

在企业实际生产环境中,避免不了要对es集群进行迁移、数据备份与恢复,以此来确保数据的可用性及完整性。因此,就涉及到了数据备份与恢复。本章主要以elasticdump工具为主,来迁移数据;如果按照索引来迁移的话,我们的数据量不算大,可以先将历史数据先迁移;实时写入的数据可以按照某个时间点来先迁移一部分;新增的数据再通过这个时间点来同步增量数据即可。

一、ElasticDump安装
1.1、使用 nvm 安装 Node.js和ElasticDump

nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具,可以帮助你轻松安装和切换不同版本的 Node.js 和 npm。

1)安装 nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc

 2)安装最新的 Node.js LTS 版本

nvm install --lts
nvm use --lts

3)确认 Node.js 和 npm 已升级

node -v
npm -v

4)安装 ElasticDump

npm install -g elasticdump

5)确认 ElasticDump 安装成功

elasticdump --version
1.2、使用二进制文件方式安装nodejs和ElasticDump
# 下载Node.js的二进制版本
wget https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz

# 解压并移动到合适的位置
tar -xf node-v14.17.0-linux-x64.tar.xz
sudo mv node-v14.17.0-linux-x64 /usr/local/node

# 设置环境变量
export PATH=/usr/local/node/bin:$PATH

# 验证Node.js版本
node -v
安装 ElasticDump
npm install -g elasticdump

elasticdump --version
二、ElasticSearch相关用法
--查询ES的监控状态
curl http://localhost:9201/_cat/health?v -u 账号:密码

--查询ES的索引
curl http://localhost:9201/_cat/indices?v -u 账号:密码

--删除索引
curl -XDELETE http://localhost:9201/commu_log_2024-05-30 -u 账号:密码

--查询索引的mapping
curl --location --request GET 'http://localhost:9201/commu_log_2024-05-11/_mapping?pretty' -u 账号:密码

--查询索引的settings
curl --location --request GET 'http://localhost:9201/commu_log_2024-05-11/_settings?pretty' -u 账号:密码

--查询索引数据
curl --location --request GET 'http://localhost:9201/commu_log_2024-05-11/_search?pretty' -u 账号:密码
三、Elasticdump的用法
3.1、备份数据
--正常情况下:
elasticdump --limit=10000 --input=http://账号:密码@localhost:9201/commu_log_2024-05-11 --output=/home/elaticdumptemp/commu_log_2024-05-11.json --type=data

--有特殊字符需要转义下:当账号和密码中有特殊字符时,需要转义,且input后面的参数需要用''括起来
elasticdump --limit=10000 --input='http://账号:密码@localhost:9201/commu_log_2024-05-11' --output=/home/elaticdumptemp/commu_log_2024-05-11.json --type=data

--带条件的查询:在备份数据时,可以使用带条件的语句来过于一部分数据
elasticdump --limit=10000 --input='http://账号:密码@localhost:9201/login_log' --output=/home/elaticdumptemp/login_log.json --type=data --searchBody '{"query": {"range": {"loginDatetime": {"gte": "1672220258625","lte": "1672229467106"}}}}'
3.2、数据迁移
--迁移分词器
elasticdump --limit=10000 --input=http://账号:密码@localhost:9200/commu_log_2024-06-03 --output='http://账号:密码@119.23.55.144:9201/commu_log_2024-06-03' --type=analyzer

--迁移映射
elasticdump --limit=10000 --input=http://账号:密码@localhost:9200/commu_log_2024-06-03 --output='http://账号:密码@192.168.1.144:9201/commu_log_2024-06-03' --type=mapping

--迁移数据
elasticdump --limit=10000 --input=http://账号:密码@localhost:9200/commu_log_2024-06-03 --output='http://账号:密码@192.168.1.144:9201/commu_log_2024-06-03' --type=data

--带条件的数据迁移:如果索引中有时间字段,可以用于增量数据的迁移
elasticdump --limit=10000 --input='http://账号:密码@localhost:9200/app_burying_log_2024-01-17' --output='http://账号:密码@192.168.1.144:9201/app_burying_log_2024-01-17' --type=mapping --searchBody '{"query": {"range": {"time": {"lte": "1705464000000"}}}}'

参数解释:

--limit:表示每次迁移的数据量

--input:数据源

--output:目的地

--type:迁移的数据类型

注意:

  1. 在实际验证中,其实不用迁移分词器和映射,只需要迁移data数据即可。
  2. 新的ELasticSearch服务中需要先新建索引,然后才能通过elasticdump导入数据。

相关推荐

  1. ELasticSearch数据迁移方案-elasticdump

    2024-06-14 10:50:05       6 阅读
  2. elasticdump elasticsearch 数据迁移

    2024-06-14 10:50:05       38 阅读
  3. 使用elasticsearchdump迁移elasticsearch数据实战

    2024-06-14 10:50:05       31 阅读
  4. mongo数据迁移方法

    2024-06-14 10:50:05       5 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 10:50:05       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 10:50:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 10:50:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 10:50:05       18 阅读

热门阅读

  1. 前端针对需要递增的固定数据

    2024-06-14 10:50:05       4 阅读
  2. 如果用户访问的是没有页面的路由跳转到404

    2024-06-14 10:50:05       4 阅读
  3. Spring源码学习-Resource

    2024-06-14 10:50:05       6 阅读
  4. 行列视(RCV)能解决哪些问题?

    2024-06-14 10:50:05       6 阅读
  5. easyExcel导入日期LocalDateTime等类型不匹配问题

    2024-06-14 10:50:05       7 阅读
  6. milvus的磁盘索引

    2024-06-14 10:50:05       7 阅读
  7. npm发布自己的插件包

    2024-06-14 10:50:05       6 阅读
  8. redis的分布式session和本地的session有啥区别

    2024-06-14 10:50:05       7 阅读
  9. postgresql中geometry类型数据迁移

    2024-06-14 10:50:05       8 阅读
  10. 小程序的价值是什么?

    2024-06-14 10:50:05       8 阅读