【问题标题】:Does SolrCloud support Join queries between shards?SolrCloud 是否支持分片之间的联接查询?
【发布时间】:2026-01-02 07:45:01
【问题描述】:

我设置了一个具有 2 个节点、2 个分片和 2 个副本的 SolrCloud。 我的 Join 查询在单个 solr 实例中运行良好,并且此 SolrCloud 设置存在一些问题。

fq = {!join from=student_id_i to=student_id_i} sf_meta_class:Students

q = sf_meta_class:书籍

我想主要是分片部分的问题,因为我得到了几乎(不完全是)一半的结果集,而不是整个结果集。 我在这里做错什么了吗?还是 Solr 从不支持多分片的 Join 查询?

我曾尝试将碎片明确地放在搜索查询中,如下所示:

http://localhost:8983/solr/core1/select?shards=solr1:8983/solr/core1,solr2:8983/solr/core1&indent=true&q=ipod+solr

它仍然对我不起作用。

编辑: 显然 SolrCloud 没有加入 Shards 中的查询。 在https://cwiki.apache.org/confluence/display/solr/SolrPerformanceProblems找到它

【问题讨论】:

    标签: solr solrcloud


    【解决方案1】:

    很遗憾,Solr 不支持这一点。 An issue 已创建,但与此同时,如果您可以将任一文档集缩减为自己的集合(例如单独的 sf_meta_class:Books),Solr 确实支持跨集合加入。需要注意的是,您需要确保较小的集合没有被分片并且存在于每个节点上。

    【讨论】:

      【解决方案2】:

      你可以使用

      fq = {!join method="crossCollection" fromIndex="yourCollection" from=student_id_i to=student_id_i} 
      

      Solr 开始支持多分片、分布式连接查询:http://www.kmwllc.com/index.php/2020/07/15/the-cross-collection-join-query/

      【讨论】: