如何在Apache Solr云模式下将文档插入特定分片

时间:2015-04-14 22:03:05

标签: solr sharding

有没有办法可以将文档添加到特定的分片中?

例如,文档类型A将始终插入到shard1中,文档类型B将始终插入到shard2中。

我尝试过使用自定义路由器,但不保证不同的前缀会路由到不同的分片。

PS。我使用云模式在Solr 5上。

1 个答案:

答案 0 :(得分:3)

警告:我正在使用SolrNet访问SolrCloud,它还没有与ZooKeeper集成。对于Java客户端,这可能要容易得多。

尽管我在CompositeId Router方面阅读了herehere,但我无法让它发挥作用。 @jay帮我算out是一种使用“隐式”路由来实现这一目标的方法。如果你像这样创建你的集合(省略numShards参数):

http://localhost:8983/solr/admin/collections?action=CREATE&name=myCol&maxShardsPerNode=2&router.name=implicit&shards=shard1,shard2&router.field=shard

然后在schema.xml命名为“shard”(匹配router.field参数)中添加一个字段,只需将shard字段添加到文档即可索引到特定分片索引并指定分片名称。在查询时,您可以指定shards进行搜索 - 更多here(我只能指定不带特定地址的分片名称)。

我还没有在生产中对此进行过测试,但已经使用ZooKeeper,HAProxy和几个Solr节点验证了多个VirtualBox实例,并且它正在按照我的预期进行操作。更正和评论欢迎。