我用4个碎片设置了SolrCloud。我向SolrCloud添加了8个节点(4个领导者和4个副本)。每个节点在不同的机器中运行。但是后来我发现我的数据越来越多(每天400万个文件),所以我的4个碎片是不够的。因此,我想动态地向这个SolrCloud添加一个碎片。当我添加一个作为副本创建的新节点时,这不是我想要的。当我在谷歌中搜索这个时,我得到的答案是使用Collection API 。如果我使用SPLITSHARD,那么将拆分已经存在的碎片。但在这里,我的要求是向这个SolrCloud添加新的碎片。怎么做?
如有任何建议,将不胜感激。提前谢谢。
发布于 2015-10-20 21:43:06
答案隐藏在SolrCloud文档中。请参见“调整群集大小”一节https://cwiki.apache.org/confluence/display/solr/Nodes,+Cores,+Clusters+and+Leaders
基本上这个过程是
非常杂乱无章的手工处理。SolrCloud不是很“云”,也就是弹性。
发布于 2015-06-16 07:55:49
当您第一次创建集合时,您做出了一个非常重要的决定,这就是切分技术。Solr提供了两种不同的方式,即隐式或compositeId。
如果将其设置为compositeId,这意味着希望solr根据您选择的字段(默认情况下是id )计算碎片,Solr将根据该字段计算32位整数哈希键,并为每个碎片分配一个范围。您还需要预先指定碎片的数量。因此,solr将为每个碎片分配32位整数值的范围,并根据散列值将文档路由到适当的碎片。例如,如果您将其设置为4个碎片,并且哈希键恰好位于32位范围的第一季度,那么它将转到第一个碎片,依此类推.
通过这种方式,您以后不能更改碎片的数量。因为这会破坏整个结构,所以您仍然可以将一个范围分成两个单独的子范围。但你不能只是扩展现有的结构。
第二种方法是隐式,您不必事先指定碎片的数量,但是在应用程序中手动进行切分,并提供一个具有碎片名称的字段,因此solr可以直接路由文档,而无需计算任何内容。通过这种方式,您可以在不影响现有碎片的情况下在将来创建尽可能多的碎片,只需按名称创建一个新的碎片,应用程序将开始使用新名称填充未来的文档。
因此,在您的情况下,如果已经选择了compositeId,则不能添加碎片,只能拆分现有的碎片。如果您认为您的碎片在未来会发生很大变化,我建议您使用隐式切分重新构建云。
查看Solr集合Api以获得更多详细信息:https://cwiki.apache.org/confluence/display/solr/Collections+API
https://stackoverflow.com/questions/30859799
复制相似问题