IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch 数据迁移方案 -> 正文阅读

[大数据]ElasticSearch 数据迁移方案

???
???
???????????????(一个人不论赋有什么样的棋,他如果不知道自己有这种棋,并且不形成适合于自己棋的计划,那种棋对他便完全无用。——休漠)
???
???
?????????在这里插入图片描述
ElasticSearch 常用api

ElasticSearch 版本说明

{
“name”: “node-3”,
“cluster_name”: “test-elasticsearch”,
“cluster_uuid”: “FM6vTooBTS6cSM9scMEU7g”,
“version”: {
“number”: “2.4.1”,
“build_hash”: “c67dc32e24162035d18d6fe1e952c4cbcbe79d16”,
“build_timestamp”: “2016-09-27T18:57:55Z”,
“build_snapshot”: false,
“lucene_version”: “5.5.2”
},
“tagline”: “You Know, for Search”
}

ElasticSearch 数据迁移方案

ElasticSearch 数据迁移方式

有以下三种方式可以更新索引结构映射和设置

  • 更新索引结构设置
    因为自定义字段的key是未知的,无法显示的设置在mappings中。所以可以在settings中设置默认的分词器和过滤器等配置

  • 更新索引结构映射
    因为非自定义字段的key是已知的,可以显示的设置在mappings中

  • 索引重建
    避免影响旧索引数据,方便回滚,可以通过此方式安全的迁移数据到新索引,业务再使用该新索引即可
    es默认滚动批次requests_per_second为1000

更新索引结构设置的数据迁移

优点:不需要数据迁移,直接更新索引设置就可以完成更新
缺点:只能对未设置过的字段进行更新,一次性操作,风险高。如果设置后数据检索等出了问题,就不能回滚了

操作步骤

  • 先查看目前的索引结构
    • 请求示例:GET http://172.21.0.31:9900/business
    • 在这里插入图片描述
  • 然后通过ElasticSearch接口_close关闭索引
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/indices-close.html#close-index-api-request
    • 请求示例:http://172.21.0.31:9900/business/_close
    • 在这里插入图片描述
  • 再通过PUT接口更新settings
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/indices-update-settings.html
    • 请求示例:http://172.21.0.31:9900/business/_settings
    • 在这里插入图片描述
    • 需要注意的是只能对未设置过的字段进行更新,当以上请求发出后,再次更新会抛错,提示无法更新
    • 在这里插入图片描述
  • 更新完成后,再通过接口启用该索引
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/indices-open-close.html
    • 请求示例:http://172.21.0.31:9900/business/_open
    • 在这里插入图片描述
  • 重新查看该索引结构,查看更新后的结构
    • 请求示例:GET http://172.21.0.31:9900/business
    • 在这里插入图片描述
更新索引映射的数据迁移
  • 同以上步骤相同,只不过更新是mappings
  • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.11/indices-put-mapping.html
重建索引_reindex,通过ElasticSearch提供的api _reindex接口进行索引数据迁移

优点:不影响旧索引数据,使用新的索引结构,即便出问题,也能够快速回滚到旧索引上
缺点:因为要迁移数据,操作较为麻烦。如果不删除旧数据索引,会额外的占用磁盘空间。业务需要使用新索引,可能需要做代码兼容

操作步骤

  • 先创建新的索引结构
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/indices-create-index.html
    • 请求示例 POST http://172.21.0.31:9900/business_bak
    • 在这里插入图片描述
  • 查看刚刚创建的新索引
    • 请求示例GET http://172.21.0.31:9900/business_bak
    • 需要注意numeric_detection数字转换和date_detection日期转换 ,在es中numeric_detection默认是false,但date_detection默认是开启的,所以我们需要显示的关闭date_detection选项,避免后面因为数据格式不一致导致迁移失败
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-field-mapping.html#_customizing_detected_date_formats
    • 在这里插入图片描述
  • 查看新索引中的数据,因为是刚新建的索引,所以数据是空的
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/search-search.html
    • 请求示例:GET http://172.21.0.31:9900/business_bak/_search
    • 在这里插入图片描述
  • 使用_reindex接口将索引business的索引数据复制至business_bak
    • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/docs-reindex.html
    • 请求示例:POST http://172.21.0.31:9900/_reindex
    • 在这里插入图片描述
  • 再次查看新索引中的数据,已经和旧索引中的一摸一样了
    • 在这里插入图片描述
  • 当数据量比较大时,可以使用wait_for_completion=false,指定创建异步任务,请求成功后,es会返回一个任务编号,用于后续查看和取消
    • 以测试数据举例
    • 请求示例:POST http://172.21.0.31:9900/_reindex?wait_for_completion=false
    • 在这里插入图片描述
    • 通过接口查看该任务的状态
    • 请求示例:GET http://172.21.0.31:9900/_tasks/OfyS4qUGTW2OuA2BL5fYgQ:36133906
    • 在这里插入图片描述
  • 若数据复制任务发生异常等情况,可以使用_cancel取消
    • 请求示例:POST http://172.21.0.31:9900/_tasks/OfyS4qUGTW2OuA2BL5fYgQ:36133906/_cancel
    • 在这里插入图片描述
    • 再次查看,任务已经消失了
    • 在这里插入图片描述
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:52:47  更:2022-03-13 21:54:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码