Elasticsearch 版本:6.4.0
一、疑问
在项目中后期,如果想调整索引的 Mapping 结构,比如将 ik_smart 修改为 ik_max_word 或者 增加分片数量 等,但 Elasticsearch 不允许这样修改呀,怎么办?
常规 解决方法:
- 根据最新的 Mapping 结构再创建一个索引
- 将旧索引的数据全量导入到新索引中
- 告知用户,业务要暂停使用一段时间
- 修改程序,将索引名替换成新的索引名称,打包,重新上线
- 告知用户,服务可以继续使用了,并说一声抱歉
我认为最大的弊端就是:需要修改替换程序,甚至有时候还得告知用户暂停使用业务。
有没有更好的方式去解决上面的需求呢?有!幸好,Elasticsearch 为我们提供了另外一种解决方法,可以不需要告知用户和修改程序代码。那就是通过索引别名来重建索引。
二、索引别名
索引别名可以关联一个或多个索引,并且可以在任何需要索引名称的 API 中使用。 通俗解释,别名类似于 windows 的快捷方式,linux 的软链接,mysql 的视图。别名为我们提供了极大的灵活性。它们允许我们执行以下操作:
- 在正在运行的集群上,允许一个索引与另外一个索引之间透明切换。
- 对多个索引进行分组组合。比如,有根据月份来创建的索引&#x