Elasticsearch迁移数据方案(不停服重建索引)

背景

  • Elasticsearch是一个高扩展的开源全文搜索和分析引擎,它允许存储、搜索和分析大量的数据。
  • ES 的索引创建之后的 mapping 结构是不能够修改的,如果系统中的 ES 索引没有使用别名指向真正的索引,那么要达到增删mapping字段的需求,就需要对索引进行重建。

方案

流程图

image

打开临时索引

  • 在系统中定义开关,读取外部配置文件,当开关置为 true 时,所有数据将交给临时索引保存,也就是index_temp 进行处理。
  • 在index_temp接收数据的过程中,index_old依旧可以提供查询服务,但是之前程序如果使用的是index_old查询的话,会造成新添加进 index_temp 的数据不可查询

拷贝数据

  • 将index_old的数据拷贝到index_new中
 ReindexAction.INSTANCE
 .newRequestBuilder(elasticsearchTemplate.getClient())
                    .source("index_old")
                    .destination("index_new")
                    .get();

删除老索引&建立别名

  • 目前index_old中的数据已经全部拷贝到index_new中了,现在就要把index_old删掉,建立index_old的别名指向index_new,也就是说将 index_old 删掉,再建立名叫index_old的别名指向 index_new, 此时index_old 和 index_new 都能提供服务
  if (elasticsearchTemplate.indexExists("index_old")) 
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值