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添加字段:

<fieldname="_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

相关推荐