Lucene ElasticSearch:意外启动同一服务器中的2个实例
所以我意外地在同一台机器上启动了两个ElasticSearch实例。一个端口为9200,另一个端口为9201。这意味着有2个集群节点,每个节点都有相同的名称,每个节点都有1/2的总碎片用于每个索引 如果我杀死其中一个实例,我现在会得到一个实例拥有1/2的碎片Lucene ElasticSearch:意外启动同一服务器中的2个实例,lucene,elasticsearch,Lucene,elasticsearch,所以我意外地在同一台机器上启动了两个ElasticSearch实例。一个端口为9200,另一个端口为9201。这意味着有2个集群节点,每个节点都有相同的名称,每个节点都有1/2的总碎片用于每个索引 如果我杀死其中一个实例,我现在会得到一个实例拥有1/2的碎片 如何解决此问题?我只想有一个包含所有碎片的实例(就像以前一样)所以。。。有一个干净的方法来解决这个问题。尽管我必须说ElasticSearch文档非常混乱(所有这些流行词,如cluster和zen discovery,都让我感到困惑!) (
如何解决此问题?我只想有一个包含所有碎片的实例(就像以前一样)所以。。。有一个干净的方法来解决这个问题。尽管我必须说ElasticSearch文档非常混乱(所有这些流行词,如cluster和zen discovery,都让我感到困惑!) (一) 现在,如果您有两个实例,一个在端口9200中,另一个在9201中。你希望所有的碎片都是9200 运行此命令以禁用9201实例中的分配。如果希望此更改不是永久性的,可以将持久性更改为瞬态。我会坚持下去,这样就不会再发生这种事了
curl -XPUT localhost:9201/_cluster/settings -d '{
"persistent" : {
"cluster.routing.allocation.disable_allocation" : true
}
}'
2) 现在,运行命令将9201实例中的所有碎片移动到9200
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
"commands" : [ {
"move" :
{
"index" : "<NAME OF INDEX HERE>", "shard" : <SHARD NUMBER HERE>,
"from_node" : "<ID OF 9201 node>", "to_node" : "<ID of 9200 node>"
}
}
]
}'
curl-XPOST'localhost:9200/_集群/重新路由'-d'{
“命令”:[{
“移动”:
{
“索引”:“碎片”:,
从节点“:”到节点“:”
}
}
]
}'
您需要为9201实例中的每个碎片(您想要删除的碎片)运行此命令
如果您有ElasticSearch头,该碎片将是紫色的,并且将具有“重新分配”状态。如果你有很多数据,比如说>1GB,碎片移动需要一段时间——可能需要一个小时甚至更长时间,所以要有耐心。在所有操作完成之前,不要关闭实例/节点
就这样 更多内容供我自己学习,但您能否将每个索引的副本设置为1,让它们分配/上传,然后关闭9201节点?剩下的“集群”(9200上的一个节点)不会将副本升级到原色吗?是的,我相信这是可能的,但我没有尝试。@JamesAddison是的,这也是可能的。此外,还有一个脱机选项,即停止节点(或至少禁用刷新),手动合并两个数据子文件夹,其中包含两个不同节点的索引,然后启动要保留的节点。另外,在真正的服务器(而不是您的机器)中,请记住在移动完碎片后重新启用分配。@javanna在相关说明中,备份弹性搜索索引的最佳方法是什么?