首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在没有SPLITSHARD的情况下动态地向SolrCloud添加一个节点?

如何在没有SPLITSHARD的情况下动态地向SolrCloud添加一个节点?
EN

Stack Overflow用户
提问于 2015-06-16 05:56:27
回答 2查看 6.6K关注 0票数 3

我用4个碎片设置了SolrCloud。我向SolrCloud添加了8个节点(4个领导者和4个副本)。每个节点在不同的机器中运行。但是后来我发现我的数据越来越多(每天400万个文件),所以我的4个碎片是不够的。因此,我想动态地向这个SolrCloud添加一个碎片。当我添加一个作为副本创建的新节点时,这不是我想要的。当我在谷歌中搜索这个时,我得到的答案是使用Collection API 。如果我使用SPLITSHARD,那么将拆分已经存在的碎片。但在这里,我的要求是向这个SolrCloud添加新的碎片。怎么做?

如有任何建议,将不胜感激。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-10-20 21:43:06

答案隐藏在SolrCloud文档中。请参见“调整群集大小”一节https://cwiki.apache.org/confluence/display/solr/Nodes,+Cores,+Clusters+and+Leaders

基本上这个过程是

  1. 分割一个碎片-现在你将在一台机器上有两个碎片
  2. 在新机器上安装这个新碎片的副本。
  3. 从原来的机器上拆下新的碎片。ZooKeeper将把复制品推广给那个碎片的领先者。
  4. 为新的碎片设置一个副本

非常杂乱无章的手工处理。SolrCloud不是很“云”,也就是弹性。

票数 2
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30859799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档