好了,到目前看起来都很完美,除了有一点点问题,就是如果每次修改索引都要改配置或程序里面的索引名,甚至意味着需要重新部署。那还有没有办法变的更完美一点点呢?
在 Elasticsearch 里面有个 alias 别名的功能,可以动态的修改别名指向的实际索引,这个功能刚好可以实现我们索引的动态修改,具体的使用方法如下:
POST /_aliases
{
"actions" : [
{ "add" : { "index" : "forum-mysql-v1", "alias" : "forum-mysql" } }
]
}
这里参数里面的 add,表示添加一个别名的操作,里面有两个参数,index 表示对具体的那个索引进行别名的操作,alias 也就是添加一个什么样的别名。
与 add 对应的还有一个删除别名的操作,用于删除索引的别名,假如有一天,我们重新修改了索引,我们需要将别名切换到一个新的索引里面去(如 forum-mysql-v2),则可以进行如下的操作:
POST /_aliases
{
"actions" : [
{ "add" : { "index" : "forum-mysql-v2", "alias" : "forum-mysql" } },
{ "remove" : { "index" : "forum-mysql-v1", "alias" : "forum-mysql" } }
]
}
通过别名,我们实现了虚拟的索引名,我们然后进一步修改我们的查询也指向我们的别名,而不是实际的索引,如下:
现在,打开浏览器执行一下测试,智能提示应该能够很好的一切照旧。
视图