我已经设置了 SolrCloud 4个分片。我向SolrCloud添加了8个节点(4个领导者和4个副本)。每个节点都在不同的机器上运行。但后来我发现我的数据越来越多(每天 400万个文件),所以我的4个分片是不够的。所以,我想动态地向这个SolrCloud添加一个分片。当我添加一个创建为副本的新节点时,这不是我想要的。当我在Google中搜索此内容时,我得到的答案是使用 Collection API SPLITSHARD 。如果我使用SPLITSHARD将拆分已存在的碎片。但是我的要求是向此SolrCloud添加新分片。怎么做?
任何建议将不胜感激。提前谢谢。
答案 0 :(得分:2)
答案隐藏在SolrCloud文档中。请参阅https://cwiki.apache.org/confluence/display/solr/Nodes,+Cores,+Clusters+and+Leaders“调整群集大小”部分
基本上这个过程是
非常kludgy和手动过程。 SolrCloud不是很“多云”,即有弹性。
答案 1 :(得分:0)
当您第一次创建集合时,您做出了一个非常重要的决定,这是一种分片技术。 Solr提供了两种不同的方式,隐式或 compositeId 。
如果将其设置为 compositeId ,这意味着您希望solr根据您选择的字段(或默认情况下的id)计算分片,Solr将计算32位整数哈希值key基于该字段,并为每个分片分配一个范围。您还需要提前指定分片数。因此,solr将为每个分片分配一系列32位整数值,并根据哈希值将文档路由到正确的分片。例如,如果将其设置为4个分片,并且哈希键恰好位于32位范围的第一个四分之一,那么它将转到第一个分片,依此类推......
通过这种方式,您无法在以后更改分片数。因为这将破坏整个结构,您仍然可以将一个范围拆分为两个单独的子范围。但你不能只扩展现有的结构。
第二种方式,即隐式,您不必事先指定分片数,但是在应用程序中手动进行分片,并提供名称为因此,solr可以直接路由文档而无需计算任何东西。通过这种方式,您可以在将来创建任意数量的分片而不会影响现有分片,您只需按名称创建一个新分片,您的应用程序将开始使用新名称填充未来的文档。
因此,在您的情况下,如果您已经选择了compositeId,则无法添加分片,您只能分割现有分片。如果你认为你的分片将来会发生很大变化,我建议你使用隐式分片重新构建你的云。
查看Solr collection Api了解更多详情:https://cwiki.apache.org/confluence/display/solr/Collections+API