在solr

时间:2017-02-23 17:57:52

标签: hash solr solrj sharding solrcloud

我发现自己需要支持具有准确ngroups计数的结果分组。这需要secondaryId字段对文档进行共置。

我目前正在使用solr中的compositeId路由器索引文档。 uniqueKeydocumentId,我在前面添加了一个分片键,如下所示:

doc.addField("documentId", secondaryId + "!" + actualDocId);

我看到的问题是,我的3个分片中的文档数量现在是不均衡的:

shard1: ~30k
shard1: ~60k
shard1: ~30k

(预计会增长很多。)

显然secondaryId的哈希值分布不均匀,但我对可能的值不太了解。

有关更好地分发这些文件的想法吗?

1 个答案:

答案 0 :(得分:1)

您的数据没有均匀分布在您的secondaryIds中。一些辅助ID比其他ID具有更多的数据。没有完美和/或简单的解决方案。

假设您无法更改路由ID,一种方法是在相同数量的主机上创建大量的分片,例如16个。现在,您的碎片将变小,并且仍然可能不均匀。但是,鉴于它们的数量较大,您可以在拥有的节点之间四处移动碎片,以或多或少地平衡节点的大小。

注意事项是您已路由查询,因此每个查询仅命中一个分片。如果您有未路由的查询,拥有大量的分片会导致性能显着下降,因为每个查询都需要针对每个分片运行。

相关问题