您的位置:首页 > 科技 > 能源 > ELasticSearch数据迁移方案-elasticdump

ELasticSearch数据迁移方案-elasticdump

2024/9/24 5:24:54 来源:https://blog.csdn.net/dc282614966/article/details/139613213  浏览:    关键词: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 elasticdumpelasticdump --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导入数据。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com