solr sharding策略

solr中含有两种sharding策略,一种是默认的compositeId(一致性hash),一般在指定numShards参数时,会自动切换到router="compositeId",如果采用compositeId方式,那么就不能动态增加shard。如果采用的是implicit方式,就可以动态的增加shard。
compositeId:该路由为一致性哈希路由,shards的哈希范围从80000000~7fffffff。初始创建collection是必须指定numShards,compositeId路由算法根据numShards的个数,计算出每个shard的哈希范围,在update或者新增时,根据uniqueid的hash坐落在那个hash区间来决定这份document数据发送至哪个shard。
implicit:该路由方式指定索引具体落在路由到哪个shard,这与compositeId路由方式索引可均匀分布在每个shard上不同。同时只有在implicit路由策略下才可创建shard,同时,在需要update或者add的document中增加_route_字段来存放需要发送的shard名字,以此shard的名字来决定发送至哪个shard,所以由此可以看出ImplicitDocRouter更加灵活。
利用solrJ新建索引时,需要在代码中指定索引具体落在哪个shard上,添加代码如下:
doc.addField("_route_","shard_x")
同时在schema.xml添加字段:
<field name="_route_" type="string"/>
    利用URL创建implicit路由方式collection:

        http://10.21.17.200:9580/solr-5.0.0-web/admin/collections?action=CREATE&name=testimplicit&router.name=implicit&shards=shard1,shard2,shard3

你可能感兴趣的:(Solr)