solr sharding策略

yiduwangkai發表於2016-03-16
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

相關文章