SolrCloud路由学习总结

SolrCloud提供了两种路由算法:compositeId、implicit 

          在创建Collection时,需要通过router.name指定路由策略,默认为compositeId路由。

compositeId

该路由为一致性哈希路由,shards的哈希范围从80000000~7fffffff。初始创建collection是必须指定 numShards,compositeId路由算法根据numShards的个数,计算出每个shard的哈希范围,因此路由策略不可以扩展shard。


需要注意的是:使用compositeId路由创建collection,指定numShards后,不可扩展Shard,即使勉强增加Shard,新建索引也不会落在该Shard上。查看clusterstate.json,可看到新建shard的"range":null。

如果需要扩充,可以使用SPLITSHARD来实现。

implicit

该路由方式指定索引具体落在路由到哪个Shard,这与compositeId路由方式索引可均匀分布在每个shard上不同,只有在implicit路由策略下才可创建shard。利用solrJ新建索引时,需要在代码中指定索引具体落在哪个shard上,否则会默认添加到第一个shard里面。


例子:action=CREATE&name=testimplicit&router.name=implicit&shards=shard1,shard2,shard3

实际应用 - 把implicit改为conpositeId

先跟据shard个数,得到每个shard的range(用conpositeId方式新建一个同样个数shard的collection,即可得到相应shard的range),用程序读取zk的clusterstate.json文件,把range属性的值替换,把router.name的值替换,然后用程序把clusterstate.json写回zk即可。


来源:  http://www.it165.net/pro/html/201506/45483.html

你可能感兴趣的:(技术学习)