Solr 4将Shard添加到现有Cluster

Chr*_*ris 2 lucene solr

背景:我刚读完Apache Solr 4 Cookbook.在其中作者提到,设置分片需要明智地完成,而b/c新的分片无法添加到现有的群集中.但是,这是使用Solr 4.0编写的,目前我使用的是4.1.这仍然是这样吗?我希望我没有发现这个问题,我希望有人可以告诉我.

问题:我是否希望知道在SolrCloud集群中设置分片时我将来会存储多少数据?我和Solandra一起玩过并阅读弹性搜索,但说实话,我是Solr的粉丝(以及它的大社区!).我也喜欢Zookeeper.我现在卡住了还是有解决方法/补丁?

编辑:如果上面的问题是NO,我可以用一堆(可能是100或更多)分片构建一个SolrCloud并让它们增长(内部),当我增长数据时,开始逐个剥离它们并将它们放大,更快服务器有更多资源?

Sam*_*cía 6

是的,当然可以.您必须设置指向同一zookeeper实例的新Solr服务器.在引导期间,服务器连接到zk集合并将其自身注册为集群成员.

注册过程完成后,服务器就可以创建新的核心了.您可以使用CoreAdmin创建现有分片的副本.您也可以创建新的分片,但由于Lucene索引格式(并非所有字段都存储),它们将无法平衡,因为它可能没有重新平衡群集的所有文档信息,因此只有新的索引/更新文档才能到达这个服务器(不建议这样做).

设置SolrCloud时,必须考虑文档编号增长因子来创建集群,因此如果您最初有1M文档并且每天增长10k docs,请使用5个分片设置集群,因此在开始时您必须在您的两台计算机初始设置中托管此分片,但在将来,根据需要,您可以将新服务器添加到群集并将这些分片移动到这些新服务器.小心不要过度增加群集,因为在Lucene中,在5个分片中分割的单个20Gb索引在每个分片中都不是4Gb索引.每个分片将占用大约(single_index_size/num_shards)*1.1(由于字典压缩).这可能会根据您的学期频率而改变.

最后一次机会是将新服务器添加到群集中,而不是向现有服务器添加新的分片/副本,使用新分片设置新的不同集合,并与此新集合并行重新索引.然后,一旦您的reindex过程完成,交换此集合和旧集合.