当前位置: 首页 > article >正文

Elasticsearch 重建索引数据迁移

文章目录

    • 1.前言
    • 2.步骤
      • 2.1 操作流程图
      • 2.2 具体步骤
        • 2.2.1 新建临时索引
        • 2.2.2 数据迁移
        • 2.2.3 清理旧索引数据
        • 2.2.4 修改旧索引字段类型
        • 2.2.5 再将新临时索引的数据签回到旧索引中
        • 2.2.6 最后删除新临时索引

1.前言

  • ES 索引不支持直接修改某个字段类型,如果该索引中已经存在数据。
  • 如果要修改字段类型,只能通过重建索引+数据迁移的方式来实现该效果。

2.步骤

2.1 操作流程图

请添加图片描述

2.2 具体步骤

注意下面的步骤,前提

  • 相关的写 ES 业务逻辑已经停止
  • 否则一直有数据写入的话,无法执行下面操作
2.2.1 新建临时索引

获取旧索引的 Mapping 和 Settings

GET /old_index/_mapping
GET /old_index/_settings

创建新索引

PUT /new_tmp_index
{
  "settings": {
    // 复制旧索引的设置,并根据需要进行修改
  },
  "mappings": {
    // 复制旧索引的mapping,并根据需要进行修改
  }
}

其中 settings 中有些信息需要删除掉,根据创建索引时报错提示信息来操作即可

比如如下信息需要删除

"provided_name": "old_index",
"creation_date": "1725618688486",
"uuid": "85ZDMiQmQsSzBFVLSeu6Xg",
"version": {
 "created": "8070199"
 }

mappings 根据新字段的类型需求进行修改

2.2.2 数据迁移
POST /_reindex
{
  "source": {
    "index": "old_index"  // 旧索引名称
  },
  "dest": {
    "index": "new_tmp_index"  // 新索引名称
  }
}

这个过程是异步的,需要通过查看页面来判断数据是否迁移完成

Index Management 页面,搜索两个索引,比较数量和大小,当数据一直时,表示迁移完成

请添加图片描述

2.2.3 清理旧索引数据
POST /old_index/_delete_by_query  
{  
  "query": {  
    "match_all": {}  
  }  
}
2.2.4 修改旧索引字段类型

修改 mappings 对应的字段

PUT old_index/_mapping
{
  "properties": {
    "test1": {
      "type": "keyword"
    },
    "test2": {
      "type": "keyword"
    },
    "test3": {
      "type": "keyword"
    }
  }
}
2.2.5 再将新临时索引的数据签回到旧索引中
POST /_reindex
{
  "source": {
    "index": "new_tmp_index"  // 新索引名称
  },
  "dest": {
    "index": "old_index"  // 旧索引名称
  }
}

做完这一步,其实已经达到了我们要的效果

同样这个过程是异步的,需要通过查看页面来判断数据是否迁移完成

Index Management 页面,搜索两个索引,比较数量和大小,当数据一直时,表示迁移完成

请添加图片描述

2.2.6 最后删除新临时索引

Index Management 页面找到新建的临时索引,点击名称超链接,再点击右下角的【Manage】按钮,Delete index 可以删除索引
请添加图片描述


http://www.kler.cn/a/395343.html

相关文章:

  • MyBatis——增删查改(XML 方式)
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
  • 百度搜索AI探索版多线程批量生成TXT原创文章软件-可生成3种类型文章
  • 【excel】easy excel如何导出动态列
  • HTTP常见的状态码有哪些,都代表什么意思
  • STM32问题集
  • 智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁
  • 【机器学习】特征工程、降维与超参数调优:提升机器学习模型表现的三大核心技术
  • 点云论文阅读-1-pointnet++
  • HTTP —— OSI七层模型
  • 深度学习之 LSTM
  • MACA-PEG-NHS中PEG链段能够增加修饰后材料的溶解度和稳定性
  • 无人机飞手在保家卫国上重要性技术详解
  • 如何使用谷歌浏览器阅读网页内容
  • 微信小程序中使用离线版阿里云矢量图标
  • Dubbo分布式日志跟踪实现
  • Win10 安装MySQL 5.7.32(解压版)
  • Flink1.19编译并Standalone模式本地运行
  • 在C2M(Customer-to-Manufacturer)柔性制造模式下,算法
  • element-ui】使用el_upload上传文件无法动态修改action
  • Scala的set
  • Python学习------第八天
  • 万字长文解读深度学习——训练(DeepSpeed、Accelerate)、优化(蒸馏、剪枝、量化)、部署细节
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • 跨域问题的产生和解决
  • 【MatLab手记】 --从0到了解超超超详过程!!!