Solr Cloud 6.4.0文档路由compositeID不会路由到另一个分片

时间:2017-03-29 17:29:46

标签: solr routing solrcloud

我对SolrCloud设置中发生的事情感到困惑。也就是说,你看到我对这个话题不熟悉了。

我目前的测试设置是: 我在一台服务器上创建了一个SolrCloud(目前我没有更多用于测试)。我使用嵌入式Zookeeper。 我在三个节点上有三个分片,每个节点有两个副本。每个节点都有不同的IP(8984,7574,7575)。

我用

设置了一个集合
curl 'http://localhost:8984/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=2&collection.configName=myconfigset&router.name=compositeId'

当我使用

索引某些文档时
curl 'http://localhost:8984/solr/mycollection/update/csv?update.chain=all-into-one&commit=true&separator=%09&encapsulator=%00&header=true&trim=true&f.itau_name3.split=true&f.itau_name3.separator=;&f.itau_lnx3.split=true&f.itau_lnx3.separator=;&f.itau_af3.split=true&f.itau_af3.separator=;&f.itau_init3.split=true&f.itau_init3.separator=;' --data-binary @file.txt -H 'Content-type:text/plain; charset=utf-8'

路由工作......有时候。它似乎取决于我使用的前缀/ compositeID:

当我使用r1!<uniquekey>r2!<uniquekey>r3!<uniquekey>时,带有_route_=r1!的查询会返回带有r1和r2前缀的文档。 _route_=r3!似乎已正确路由。在完全相同的设置(清除索引并重新编制索引之后)与year1!year2!year3!作为前缀有效。具有q=*:*&_route_=year1!等的查询仅返回相应路由前缀的结果。

有人可以帮助我找出这里发生了什么吗? 对如何构造路由前缀有什么限制吗?

1 个答案:

答案 0 :(得分:0)

你没有显示完整的查询,但我怀疑这可能会发生:

  1. 当您使用 route = r1进行查询时!你没有添加fq = r_field:r1
  2. 路线 = R1!只告诉Solr要查询哪个shard,但这并不排除在同一个分片中也被索引的其他r字段值(如r2和r3),这就是你需要添加fq的原因
  3. 这有意义吗?