起因
显而易见,如果我们需要修改索引,而重建需要删除旧的索引,会导致线上服务不可用,因此,我们想要在不影响线上检索服务的同时,修改索引,就需要用到elasticsearch的一个特性,别名机制
什么是索引别名
索引 别名 就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,允许我们做下面这些:
- 在运行的集群中可以无缝的从一个索引切换到另一个索引
- 给多个索引分组 (例如, last_three_months)
- 给索引的一个子集创建 视图
使用方式
管理别名的两种方式:
1_alias
用于单个操作
2 _aliases
用于执行多个原子级操作。
添加别名:给ftyj_test索引添加别名:ftyj_test_alias
PUT ftyj_test/_alias/ftyj_test_alias
你可以检测这个别名指向哪一个索引:
GET /*/_alias/ftyj_test_alias
或哪些别名指向这个索引:
GET /ftyj_test/_alias/*
上面两种方式都会返回如下相同结果:
{
"ftyj_test" : {
"aliases" : {
"ftyj_test_alias" : { }
}
}
}
实际生产环境过程:
1 备份生产环境索引,重建索引
2 将别名的指向从原来生产环境的索引指向新创建的索引
第二步代码如下
POST /_aliases
{
"actions": [
{ "remove": { "index": "ftyj_test", "alias": "ftyj_test_alias" }},
{ "add": { "index": "ftyj", "alias": "ftyj_test_alias" }}
]
}
执行上面命令以后,再查询别名指向
GET /*/_alias/ftyj_test_alias
结果: