solr - Solr 4将分片添加到现有集群

标签 solr lucene

背景:我刚读完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/

相关文章:

elasticsearch - elasticsearch对象的最佳大小是多少

solr - Apache Solr 中的相关反馈

optimization - 收集 Lucene/优化中搜索的所有命中

java - SOLR 不同查询

solr - 将子文档添加到现有 Solr 6.4 集合文档会创建重复文档

lucene - 增强对源文档属性的查询

java - Lucene 性能

java - Lucene 中的 - 和 NOT 运算符有什么区别?

solr - Datastax - Cassandra CQL Solr 查询分页问题

java - 什么是 HttpSolrServer 的替代品 solrServer = new HttpSolrServer(builder.build().toString());