为什么在弹性搜索中创建索引后无法更改主分片?

时间:2018-02-19 08:50:07

标签: elasticsearch distributed-computing

在Elasticsearch(ES)中,为什么我们不能在创建索引后更改主分片的数量,而我们可以随时更改副本分片的数量。我理解,与主分片相比,更改副本分片的开销更少,但它似乎不是一项不可能的任务?

是否有任何分布式系统概念或性能增益不允许它?

1 个答案:

答案 0 :(得分:1)

我本来打算自己解释一下,但我发现它已经在官方Elasticsearch official guide中得到了适当的解释:

  

用户经常会问为什么Elasticsearch不支持分片分割 - 将每个分片分成两个或多个部分的能力。原因是碎片分裂是一个坏主意:

     
      
  • 拆分分片几乎等同于重新索引数据。这比将一个碎片从一个节点复制到另一个节点要重得多。

  •   
  • 分裂是指数级的。你从一个碎片开始,然后分成两个,然后是四个,八个,十六个,依此类推。拆分不允许您将容量增加50%。

  •   
  • 分片分割要求您有足够的容量来保存索引的第二个副本。通常,当您意识到需要向外扩展时,您没有足够的可用空间来执行拆分。

  •   
     

在某种程度上,Elasticsearch确实支持分片分割。您始终可以使用适当数量的分片将数据重新索引到新索引(请参阅重新索引数据)。它仍然是一个比移动碎片更密集的过程,并且仍然需要足够的可用空间来完成,但至少你可以控制新索引中的碎片数量。