我需要重命名集群中的几个索引(它们的名称必须更改,我不能使用别名)。
我看到没有支持的方法来执行此操作,发现的最接近的方法是重命名索引的目录,我在集群中尝试过此操作。
该集群有3台计算机A
,B
并且C
分片在每台计算机上复制。我关闭了上elasticsearch A
,改名/var/lib/elasticsearch/security/nodes/0/indices/oldindexname
到/var/lib/elasticsearch/security/nodes/0/indices/newindexname
并重新启动A
。
群集的状态为黄色,elasticsearch在做一些魔术来恢复正确的状态。一段时间后,我最终
oldindexname
正在使用和完全复制(由回收B
和C
我猜的)newindexname
可用(我可以搜索它),但是头插件显示其碎片处于“未分配”状态,并且它们呈灰色显示(未复制)
在恢复过程中security.log
显示以下消息:
[2015-02-20 11:02:33,461][INFO ][gateway.local.state.meta ] [A.example.com] dangled index directory name is [newindexname], state name is [oldindexname], renaming to directory name
虽然newindexname
是可搜索的,但它肯定不是处于正常状态。
我通过删除恢复到先前的状态newindexname
。群集恢复为绿色,没有任何“未分配”条目。
鉴于此,如何在群集中重命名oldindexname
为newindexname
?
注:最终的解决方案我心目中是滚动复制oldindex
到newindex
并删除oldindex
之后。这将需要时间,因此,如果有更直接的解决方案,那就太好了。