数据迁移利器登场!Elasticdumpv6.110震撼发布,助你轻松搬迁大数据!

b680e189a1ab8325ceebd4a27d446449.jpeg

简介

     Elasticdump 是一个用于导出和导入 Elasticsearch 数据的工具。它能够从一个 Elasticsearch 集群读取数据并写入到另一个 Elasticsearch 集群、文件系统或其他数据存储(例如 S3)。这个工具非常有用,特别是在进行数据迁移、备份和恢复操作时。elasticdump 支持多种数据类型,包括索引数据、设置、映射、模板、别名等。

安装

wget https://github.com/elasticsearch-dump/elasticsearch-dump/archive/refs/tags/v6.110.0.tar.gz
tar -xvf elasticsearch-dump-6.110.0.tar
mv elasticsearch-dump-6.110.0 elasticdump
cd elasticdump\bin

迁移功能

  1. 数据迁移

  2. 数据备份与恢复

  3. 配置和映射迁移

  4. S3 数据迁移

  5. 分片级别的数据迁移

  6. 数据过滤迁移

  7. 别名(Alias)和模板(Template)迁移

功能用法

#将索引从生产环境复制到目标环境,包括分析器、映射和数据
elasticdump \--input=http://production.es.com:9200/my_index \--output=http://staging.es.com:9200/my_index \--type=analyzer
elasticdump \--input=http://production.es.com:9200/my_index \--output=http://staging.es.com:9200/my_index \--type=mapping
elasticdump \--input=http://production.es.com:9200/my_index \--output=http://staging.es.com:9200/my_index \--type=data# 将索引导出到文件:
elasticdump \--input=http://production.es.com:9200/my_index \--output=/data/my_index_mapping.json \--type=mapping
elasticdump \--input=http://production.es.com:9200/my_index \--output=/data/my_index.json \--type=data# 将索引导出到文件并压缩
elasticdump \--input=http://production.es.com:9200/my_index \--output=$ \| gzip > /data/my_index.json.gz# 将查询结果备份到文件
elasticdump \--input=http://production.es.com:9200/my_index \--output=query.json \--searchBody="{\"query\":{\"term\":{\"username\": \"admin\"}}}"# 将查询结果备份到文件,检索条件在/data/searchbody.json里面
elasticdump \--input=http://production.es.com:9200/my_index \--output=query.json \--searchBody=@/data/searchbody.json  # 拷贝指定分片数据到目标,api索引的第24分片:
elasticdump \--input=http://es.com:9200/api \--output=http://es.com:9200/api2 \--input-params="{\"preference\":\"_shards:24\"}"# 将索引的别名备份到一个文件中,修改index-name
elasticdump \--input=http://es.com:9200/index-name/alias-filter \--output=alias.json \--type=alias# 导入别名文件到es中
elasticdump \--input=./alias.json \--output=http://es.com:9200 \--type=alias# 模板备份到一个文件中
elasticdump \--input=http://es.com:9200/template-filter \--output=templates.json \--type=template# 将模版导入到ES中
elasticdump \--input=./templates.json \--output=http://es.com:9200 \--type=template# 索引数据导出到一个文件中,并将文件拆分成多个部分,每部分的大小为10MB
elasticdump \--input=http://production.es.com:9200/my_index \--output=/data/my_index.json \--fileSize=10mb# 从 Amazon S3 导入到 Elasticsearc
export access_key_id="你的AWS访问密钥ID"
export access_key_secret="你的AWS秘密访问密钥"
elasticdump \--s3AccessKeyId "${access_key_id}" \--s3SecretAccessKey "${access_key_secret}" \--input "s3://${bucket_name}/${file_name}.json" \--output=http://production.es.com:9200/my_index# 从 ES 导入到Amazon S3
export access_key_id="你的AWS访问密钥ID"
export access_key_secret="你的AWS秘密访问密钥"
elasticdump \--s3AccessKeyId "${access_key_id}" \--s3SecretAccessKey "${access_key_secret}" \--input=http://production.es.com:9200/my_index \--output "s3://${bucket_name}/${file_name}.json"# 从指定的 MinIO 存储中读取一个 JSON 文件,然后将该文件中的数据导入到指定的 Elasticsearch 索引中
export access_key_id="你的MinIO访问密钥ID"
export access_key_secret="你的MinIO秘密访问密钥"
elasticdump \--s3AccessKeyId "${access_key_id}" \--s3SecretAccessKey "${access_key_secret}" \--input "s3://${bucket_name}/${file_name}.json" \--output=http://production.es.com:9200/my_index--s3ForcePathStyle true--s3Endpoint https://production.minio.co# 从指定的 Elasticsearch 索引导入到指定的 MinIO 存储中
export access_key_id="你的MinIO访问密钥ID"
export access_key_secret="你的MinIO秘密访问密钥"
elasticdump \--s3AccessKeyId "${access_key_id}" \--s3SecretAccessKey "${access_key_secret}" \--input=http://production.es.com:9200/my_index \--output "s3://${bucket_name}/${file_name}.json"--s3ForcePathStyle true--s3Endpoint https://production.minio.co# 将文件csv数据导入到ES中
elasticdump \# csv:// prefix must be included to allow parsing of csv files# --input "csv://${file_path}.csv" \--input "csv:///data/cars.csv"--output=http://production.es.com:9200/my_index \--csvSkipRows 1    # used to skip parsed rows (this does not include the headers row)--csvDelimiter ";" # default csvDelimiter is ','

参数详解

--input                    源位置(必需)
--input-index              源索引和类型(默认:全部,例如:index/type)
--output                   目标位置(必需)
--output-index             目标索引和类型(默认:全部,例如:index/type)
--big-int-fields           指定应检查大整数支持的字段的逗号分隔列表(默认:'')
--bulkAction               设置用于准备发送到 Elasticsearch 请求体的操作类型(默认:index,可选项:[index, update, delete, create])
--ca, --input-ca, --output-ca CA 证书。如果源和目标相同,请使用 --ca。否则,根据需要使用前缀为 --input 或 --output 的证书。
--cert, --input-cert, --output-cert 客户端证书文件。如果源和目标相同,请使用 --cert。否则,根据需要使用前缀为 --input 或 --output 的证书。
--csvConfigs               设置所有 fast-csv 配置。可以提供一个转义的 JSON 字符串或文件。文件位置必须以 @ 符号为前缀(默认:null)
--csvCustomHeaders         用作数据标题的逗号分隔值列表。此参数必须与 `csvRenameHeaders` 一起使用(默认:null)
--csvDelimiter             分隔列的分隔符(默认:',')
--csvFirstRowAsHeaders     如果设置为 true,则第一行将被视为标题(默认:true)
--csvHandleNestedData      设置为 true 以处理嵌套的 JSON/CSV 数据。注意:这是一个非常有主见的实现!(默认:false)
--csvIdColumn              提取记录标识符(id)的列名。导出到 CSV 时,可以使用此列覆盖默认的 id (@id) 列名(默认:null)
--csvIgnoreAutoColumns     设置为 true 以防止将以下列 @id、@index、@type 写入输出文件(默认:false)
--csvIgnoreEmpty           设置为 true 以忽略空行(默认:false)
--csvIncludeEndRowDelimiter 设置为 true 以在 CSV 末尾包含行分隔符(默认:false)
--csvIndexColumn           提取记录索引的列名。导出到 CSV 时,可以使用此列覆盖默认的索引 (@index) 列名(默认:null)
--csvLTrim                 设置为 true 以左侧修剪所有列(默认:false)
--csvMaxRows               如果数字 > 0,则仅解析指定数量的行(例如:100 将返回前 100 行数据)(默认:0)
--csvRTrim                 设置为 true 以右侧修剪所有列(默认:false)
--csvRenameHeaders         如果希望删除文件的第一行并用 `csvCustomHeaders` 选项中提供的行替换(默认:true)
--csvSkipLines             如果数字 > 0,则将跳过指定数量的行(默认:0)
--csvSkipRows              如果数字 > 0,则跳过指定数量的解析行。注意:(如果第一行被视为标题,它们不算在内)(默认:0)
--csvTrim                  设置为 true 以修剪所有列中的空白(默认:false)
--csvTypeColumn            提取记录类型的列名。导出到 CSV 时,可以使用此列覆盖默认的类型 (@type) 列名(默认:null)
--csvWriteHeaders          决定是否将标题写入 CSV 文件(默认:true)
--customBackoff            启用自定义退避函数(s3)
--debug                    显示正在使用的 Elasticsearch 命令(默认:false)
--delete                   在将文档从输入位置移动时逐个删除文档。不会删除源索引(默认:false)
--delete-with-routing      将路由查询参数传递给删除函数,用于将操作路由到特定分片(默认:false)
--esCompress               如果为 true,则在请求中添加一个 Accept-Encoding 头以请求服务器的压缩内容编码(如果尚未存在),并解码响应中的支持内容编码。注意:对响应内容的自动解码仅对通过请求返回的 body 数据执行(包括通过请求流和传递给回调函数),但不对响应流执行(从响应事件中可获得的未修改的 http.IncomingMessage 对象,可能包含压缩数据)
--fileSize                 支持文件拆分。该值必须是 **bytes** 模块支持的字符串。以下缩写必须用于表示单位大小:b 表示字节,kb 表示千字节,mb 表示兆字节,gb 表示千兆字节,tb 表示太字节,例如:10mb / 1gb / 1tb。分区有助于通过有效地将文件分割成较小的块来缓解溢出/内存不足异常,然后可以根据需要合并这些块。
--filterSystemTemplates    是否删除 metrics-*-* 和 logs-*-* 系统模板(默认:true)
--force-os-version         强制使用 elasticsearch-dump 使用的 OpenSearch 版本(默认:7.10.2)
--fsCompress               在将输出发送到文件之前进行 gzip 压缩。在导入时使用此命令解压缩 gzipped 文件
--handleVersion            告诉 elasticsearch 传输处理数据集中存在的 `_version` 字段(默认:false)
--headers                  向 Elasticsearch 请求添加自定义头(当你的 Elasticsearch 实例位于代理后面时很有用)(默认:'{"User-Agent": "elasticdump"}')。支持基于类型/方向的头。例如:input-headers/output-headers(这些头仅在当前流程类型为 input/output 时添加)
--help                     帮助页面
--ignore-errors            在写入错误时继续读/写循环(默认:false)
--ignore-es-write-errors   在 Elasticsearch 写入错误时继续读/写循环(默认:true)
--inputSocksPort, --outputSocksPort Socks5 主机端口
--inputSocksProxy, --outputSocksProxy Socks5 主机地址
--inputTransport           提供一个自定义的 js 文件用作输入传输
--key, --input-key, --output-key 私钥文件。如果源和目标相同,请使用 --key。否则,根据需要使用前缀为 --input 或 --output 的密钥。
--limit                    每个操作移动的对象数量。对于文件流,限制是近似的(默认:100)
--maxRows                  支持文件拆分。文件按指定的行数拆分
--maxSockets               进程可以进行的同时 HTTP 请求数量是多少?(默认:5 [node <= v0.10.x] / Infinity [node >= v0.11.x])
--noRefresh                禁用输入索引刷新。优点:1. 大幅增加索引速度,2. 硬件需求大幅降低。缺点:1. 最近添加的数据可能未被索引。建议用于大数据索引,在速度和系统健康优先于最近添加的数据时使用。
--offset                   包含要从输入传输中跳过的行数的整数。当导入大型索引时,可能会出现问题,例如连接中断、崩溃、忘记 `screen` 等。这允许你从上次记录的偏移量重新开始导出。请注意,由于初始导出时没有指定排序,因此无法保证跳过的行已被写入/解析。这更像是一个选项,用于在不关心丢失一些行的情况下获取尽可能多的数据到索引中,类似于 `timeout` 选项(默认:0)
--outputTransport          提供一个自定义的 js 文件用作输出传输
--overwrite                如果输出文件存在则覆盖(默认:false)
--params                   向 Elasticsearch 请求 URI 添加自定义参数。当你希望使用 elasticsearch preference 时很有用。--input-params 是一个特定的参数扩展,可在使用 scroll API 获取数据时使用。--output-params 是一个特定的参数扩展,可在使用 bulk index API 索引数据时使用。注意:这些是为了避免在一个输入参数用于输出源时出现的参数污染问题(默认:null)
--parseExtraFields         要解析的元字段的逗号分隔列表
--pass, --input-pass, --output-pass 私钥的密码短语。如果源和目标相同,请使用 --pass。否则,根据需要使用前缀为 --input 或 --output 的密码短语。
--quiet                    除错误外,抑制所有消息(默认:false)
--retryAttempts            指定在连接失败时应自动重试请求的次数,例如遇到 `ECONNRESET`, `ENOTFOUND`, `ESOCKETTIMEDOUT`, `ETIMEDOUT`, `ECONNREFUSED`, `EHOSTUNREACH`, `EPIPE`, `EAI_AGAIN` 等错误时(默认:0)
--retryDelay               指定重试尝试之间的回退/中断时间(毫秒)(默认:5000)
--retryDelayBase           用于操作重试的指数回退的基础毫秒

注意事项

  • 版本兼容性:确保 elasticdump 版本与 Elasticsearch 版本兼容。在导出和导入数据之前,查看官方文档以了解特定版本的兼容性问题。

  • 数据一致性:在进行数据迁移时,尤其是大规模数据迁移时,数据的一致性非常重要。可以考虑在迁移前将索引设置为只读模式,以避免数据写入不一致的情况。

  • 性能和资源使用:elasticdump 进行大规模数据迁移时可能会消耗大量的资源,包括 CPU、内存和网络带宽。建议在非高峰时段进行操作,或分批次进行迁移以减少对生产环境的影响。

  • 权限:确保有足够的权限来访问 Elasticsearch 集群和数据存储(如 S3)。在使用带有身份验证的集群时,需要正确配置用户名、密码和其他认证信息。

  • 数据安全:在涉及敏感数据时,确保数据传输是加密的。例如,使用 HTTPS 而不是 HTTP,以防止数据在传输过程中被截获。

  • 错误处理:elasticdump 提供了一些选项来处理错误,例如 --ignore-errors 和 --retryAttempts。在使用这些选项时,需要权衡数据完整性和迁移速度。

总结

      elasticdump 是一个功能强大且灵活的工具,能够简化 Elasticsearch 数据的导出和导入过程。无论是备份、恢复,还是集群迁移,它都提供了丰富的选项和配置,以满足不同场景的需求。然而,在使用 elasticdump 时,需要注意版本兼容性、性能影响和数据一致性等问题,以确保数据迁移过程顺利进行。通过合理的规划和配置,elasticdump 可以有效地帮助用户管理和维护 Elasticsearch 数据。

加入数据库技术交流群:

f8e9134a48a50cc1070e282a18eedb0d.jpeg

进群福利:

1、知识共享与学习机会

2、问题求助与解决支持

3、技术沉淀和分享平台

4、及时了解行业动态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年学浪视频怎么下载到手机相册

随着2024年的到来&#xff0c;学浪平台继续为广大学习者提供优质的在线教育资源。然而&#xff0c;如何将这些宝贵的视频内容下载到手机相册&#xff0c;方便随时离线观看呢&#xff1f;无论您是想在旅途中学习&#xff0c;还是希望在没有网络的情况下复习课程&#xff0c;本文…

1106 2019数列

solution 维护长度为4的数组&#xff0c;对于第四位之后的数字&#xff0c;为所维护数组的所有元素之和 的个位数 #include<iostream> using namespace std; int main(){int n, a[4] {2, 0, 1, 9}, cnt 0, d;scanf("%d", &n);for(int i 0; i < n; …

kettle从入门到精通 第六十三课 ETL之kettle kettle调用python脚本的两种方法

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群&#xff0c;一起学习&#xff0c;共同进步。若二维码失效&#xff0c;公众号后台加我微信入群&#xff0c;备注kettle。 kettle中不能直接调用python脚本&#xff0c;可以通过shell脚本和http进行调用pyton服务。 一、shel…

Golang | Leetcode Golang题解之第97题交错字符串

题目&#xff1a; 题解&#xff1a; func isInterleave(s1 string, s2 string, s3 string) bool {n, m, t : len(s1), len(s2), len(s3)if (n m) ! t {return false}f : make([]bool, m 1)f[0] truefor i : 0; i < n; i {for j : 0; j < m; j {p : i j - 1if i >…

C++的数据结构(十八):并查集

并查集&#xff08;Union-Find&#xff09;是一种用于处理一些不交集&#xff08;Disjoint Sets&#xff09;问题的数据结构。它主要支持两种操作&#xff1a;合并集合&#xff08;Union&#xff09;和查找元素所属集合&#xff08;Find&#xff09;。在解决诸如连通性问题、网…

Ruoyi框架学习——权限管理

权限分类 菜单权限&#xff1a;用户登录系统之后能看到哪些菜单按钮权限&#xff1a;用户在一个页面上能看到哪些按钮&#xff0c;比如新增、删除等按钮接口权限&#xff1a;用户带着认证信息请求后端接口&#xff0c;是否有权限访问&#xff0c;该接口和前端页面上的按钮一一对…

AI生成内容检测|Fast-DetectGPT:通过条件概率曲率对机器生成文本进行有效的零样本检测

【摘要】大型语言模型 (LLM) 已显示出生成流畅且有说服力的内容的能力&#xff0c;这既带来了生产力机会&#xff0c;也带来了社会风险。要构建值得信赖的 AI 系统&#xff0c;必须区分机器生成的内容和人类创作的内容。领先的零样本检测器 DetectGPT 展示了值得称赞的性能&…

Github 2024-05-25 Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Svelte项目1TypeScript项目1Python项目1Go项目1Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust…

如果有多个文件夹,怎么快速获得文件夹的名字呢

上一篇写到怎么批量建立文件夹&#xff0c;那么怎么获取批量文件夹的名字呢&#xff1f; 一、啊这&#xff0c;这真是一个好问题二、这个得用Python&#xff08;文本末尾有打包程序&#xff0c;点击链接运行就可以了&#xff09;&#xff08;1&#xff09;首先建立一个py文件&a…

博客系统(Servlet实现)

目录 1.准备工作 2.数据库设计 2.1表设计 2.2封装数据库操作代码 2.3创建 Blog 类 和 User 类 2.4创建 BlogDao 类和 UserDao 类 3.读取博客列表功能 3.1约定前后端交互接口 3.2实现服务器代码 3.3实现客户端代码 4.实现博客详情 4.1约定前后端交互接口 4.2实现服…

AGI技术与原理浅析:曙光还是迷失?

前言&#xff1a;回顾以往博客文章&#xff0c;最近一次更新在2020-07&#xff0c;内容以机器学习、深度学习、CV、Slam为主&#xff0c;顺带夹杂个人感悟。笔者并非算法科班出身&#xff0c;本科学制药、研究生学金融&#xff0c;最原始的算法积累都来源于网络&#xff0c;当时…

乡村振兴与乡村文化传承创新:保护和传承乡村文化,推动乡村文化创新发展,打造具有文化魅力的美丽乡村

一、引言 在当代中国&#xff0c;乡村振兴已成为国家发展的重要战略之一。乡村不仅是自然资源的富集地&#xff0c;更是中华优秀传统文化的发源地。保护和传承乡村文化&#xff0c;推动乡村文化创新发展&#xff0c;对于打造具有文化魅力的美丽乡村&#xff0c;实现乡村全面振…

SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展

业务层开发 对于业务层的制作有个误区 Service层接口定义与数据层接口定义具有较大差别 不要混用 业务层接口关注的是业务名称 数据层接口关注的是数据层名称 操作是不难 但是有些东西还是要掌握的 业务层接口如果是业务方法 就按照业务名称来代替 如果是数据操作 直接用…

本地部署Whisper实现语言转文字

文章目录 本地部署Whisper实现语言转文字1.前置条件2.安装chocolatey3.安装ffmpeg4.安装whisper5.测试用例6.命令行用法7.本地硬件受限&#xff0c;借用hugging face资源进行转译 本地部署Whisper实现语言转文字 1.前置条件 环境windows10 64位 2.安装chocolatey 安装chocol…

mysql驱动版本变更导致查询数据结果一直是空

1 引言 最近接手了一个已离职同事的java项目&#xff0c;这个项目中原来使用了自己的mysql驱动版本&#xff0c;并未使用公司公共依赖中的版本号。我想为了统一版本号&#xff0c;就将当前项目中pom文件中mysql的版本号verson给去除了。没怎么自测&#xff0c;就直接发到测试环…

免费的八字软件

无敌八字排盘软件完全免费使用&#xff0c;即使用不需要付费且无任何限制。同时推出手机版电脑版&#xff0c;两版本数据互通互用&#xff0c;即电脑版的数据可以备份到手机版上导入&#xff0c;手机版的数据也可以备份到电脑版上恢复导入&#xff0c;方便手机和电脑共用的朋友…

Golang实现递归复制文件夹

代码 package zdpgo_fileimport ("errors""os""path/filepath""strings" )// CopyDir 复制文件夹 // param srcPath 源文件夹 // param desPath 目标文件夹 // return error 错误信息 func CopyDir(srcPath, desPath string) error {…

Android-自定义三角形评分控件

效果图 序言 在移动应用开发中&#xff0c;显示数据的方式多种多样&#xff0c;直观的图形展示常常能带给用户更好的体验。本文将介绍如何使用Flutter创建一个自定义三角形纬度评分控件&#xff0c;该控件可以通过动画展示评分的变化&#xff0c;让应用界面更加生动。 实现思…

转行3年涨薪300%,我总结了一套产品经理快速入门指南!

想转行的产品小白&#xff0c;初期一定会遇到这个问题——我要如何 0 基础转行产品经理&#xff1f; 要想 0 基础快速转行产品经理&#xff0c;我通过个人实践总结了 5 个关键点&#xff0c;可以参考。 一、熟悉产品经理的工作全流程 转行的产品小白&#xff0c;首先要建立产…

ABtest假设检验知识|配对检验|比率检验|单向表-列联表检验

文章目录 1 假设检验基础2 一般假设检验2.1 假设检验包2.2 sample - 点击转化率2.2.1 问题描述2.2.2 实验设计2.2.3 数据处理2.2.4 方差齐性检验2.2.5 假设检验2.2.6 结果分析 3 检验两个均值的差&#xff1a;配对3.1 大样本检验3.1.1 单侧检验3.1.2 双侧检验 3.2 小样本检验3.…