提问者:小点点

弹性搜索-限制节点上的主碎片和副本碎片数量


我有ElasticSearch 7.16.2集群,运行三个节点(2个主节点,1个投票节点)。索引有两个主分片和两个副本,重新启动节点时,两个主分片都移动到单个节点。如何限制节点中的索引各有一个主分片和一个副本。


共2个答案

匿名用户

您可以使用索引级别分片分配设置来实现这一点,它可能不是那么简单,而且设置有点复杂,当您在集群中更改节点和索引时,可能会导致进一步的不平衡。

为了避免节点重启时出现的问题,在 Elasticsearch 集群中启动节点之前,您必须禁用分片分配和分片重新平衡。

禁用分配的命令

PUT /_cluster/settings
{
 "persistent":{
    "cluster.routing.allocation.enable": "all"
    }
}

禁用重新平衡的命令

PUT /_cluster/settings
{
 "persistent":{
    "cluster.routing.rebalance.enable": "all"
    }
}

除此之外,您可以使用重新路由API将碎片手动移动到Elasticsearch中的一个节点,以修复您当前的碎片分配。

匿名用户

配置为< code > index . routing . allocation . total _ shards _ per _ node 。但是你有一个问题。首先,我假设您有三个< code >数据节点。(如果没有,增加数据节点。).

问题是你总共有4个主分片和副本分片,一个节点必须为自己分配两个分片。所以你不能设置index.例程.分配。total_shards_per_node1。至少它必须是2,你的问题没有解决。

配置是动态的:https://www.elastic.co/guide/en/elasticsearch/reference/master/increase-shard-limit.html

还可以为集群设置cluster.routing.allocation.totalshards_per_nodeconfig。