7.7. Elasticsearch 索引结构迁移(Migration)

索引结构迁移

在前面的章节我们已经完成了 Elasticsearch 相关的业务功能开发,在之前的开发过程中如果有涉及到商品索引的变更,我们都是通过手动调用 Elasticsearch 的接口完成的,这就如同 Mysql 的数据库结构变更都是由运维或者开发人员在代码上线时通过手动执行 SQL 来完成,这里会有两个问题:

  1. 在做某些变更时需要先关闭索引,完成变更之后再打开,需要执行很多次命令,操作起来比较麻烦;
  2. 索引的字段只能添加而不能修改,比如可以给 nested 类型的字段添加新的子字段,而 integer 类型的字段则无法被修改为 string 类型。

对于问题一我们可以通过写脚本的来避免手工操作的麻烦,但还是需要每次都编写对应的升级脚本;而问题二就更严重,需要删除掉旧的索引,根据新的结构创建新索引,然后还需要重新添加数据到索引中,可能会有较长的不可用时间。

1. 别名

在介绍解决方案之前,我们需要先了解一下 Elasticsearch 中『别名』的概念。

在 Elasticsearch 中可以给索引指定一个『别名』,对别名的所有操作都会映射到该别名所对应的索引。同时 Elasticsearch 也允许我们修改一个已存在的『别名』,...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

张汉为
PHP artisan es:migrate 没反应?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
uasemax
老师,有一处地方让我很疑惑.
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
清风知我意
Elasticsearch 迁移报错
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
Flourishing
老师,命名空间这里我有点忘记了,麻烦老师看我理解的对不?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
finding
更新索引只更新索引结构,不重建数据?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5