有没有办法可以将文档添加到特定的分片中?
例如,文档类型A将始终插入到shard1中,文档类型B将始终插入到shard2中。
我尝试过使用自定义路由器,但不保证不同的前缀会路由到不同的分片。
PS。我使用云模式在Solr 5上。
答案 0 :(得分:3)
警告:我正在使用SolrNet访问SolrCloud,它还没有与ZooKeeper集成。对于Java客户端,这可能要容易得多。
尽管我在CompositeId Router
方面阅读了here和here,但我无法让它发挥作用。 @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实例,并且它正在按照我的预期进行操作。更正和评论欢迎。