背景:我刚读完Apache Solr 4 Cookbook。作者在其中提到需要明智地设置分片,因为不能将新的分片添加到现有集群中。但是,这是使用Solr 4.0编写的,目前我正在使用4.1。还是这样吗?我希望我没有找到这个issue,希望有人可以告诉我。
问题:我是否希望知道将来在SolrCloud集群中设置分片时会存储多少数据?
我玩过Solandra并阅读了elastic search,但老实说,我是Solr的粉丝(及其广泛的社区!)。我也喜欢Zookeeper。我现在被卡住了还是有解决方法/补丁?
编辑:如果上面的问题为“否”,我可以用一堆(可能是100个或更多)分片构建SolrCloud并让它们(内部)增长,而当我增长数据时,就开始将它们一一剥离并放到更大的位置。 ,具有更多资源的更快的服务器?
最佳答案
是的,当然可以。您必须设置一个指向相同Zookeeper实例的新Solr服务器。在引导过程中,服务器连接到zk ensemble并将其注册为集群成员。
注册过程完成后,服务器即可准备创建新核心。您可以使用CoreAdmin创建现有分片的副本。您也可以创建新的分片,但是由于Lucene索引格式(并非存储了所有字段),它们将不会平衡,因为它可能没有所有文档信息来重新平衡群集,因此只有新的索引/更新的文档才能到达此服务器(建议不要这样做)。
设置SolrCloud时,必须考虑文档数量增长因素来创建集群,因此,如果最初拥有1M文档,并且文档数量增长为每天10k文档/天,则需要使用5个分片来设置集群。在您的两台计算机的初始设置中托管此碎片,但是将来,根据需要,您可以将新服务器添加到集群和move those shards to this new servers中。请注意不要使群集过度增长,因为在Lucene中,将5个分片拆分成一个20Gb索引不会是每个分片中都有4Gb索引。每个分片大约需要(single_index_size / num_shards)* 1.1(由于字典压缩)。这可能会根据您的任期频率而改变。
您最后的机会是将新服务器添加到群集中,而不是向现有服务器添加新的分片/副本,而是使用新的分片设置一个新的不同集合,并与此新集合并行地重新索引。然后,一旦您的重新索引过程完成,就将这个集合与旧集合交换。
关于solr - Solr 4将分片添加到现有集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784326/