Hello, John.
This exception occurs in the caller side: a node executing join requests
streaming expor from another node.
The root cause of the problem might be found in the callee node logs.


On Tue, Aug 8, 2023 at 8:48 AM John Jackson <[email protected]> wrote:

> Please consider SOLR version greater than 8.6.0 for this query. There are
> many questions regarding this issue but all are before version 8.6.0 and at
> that time SOLR was not supporting Join between multiple shards and multiple
> collection.
>
> <https://stackoverflow.com/posts/76578595/timeline>
>
> Now refer below links, it mention that SOLR supports Join between multiple
> collection and multiple shards. Refer Solr 8.6.0 Release Highlights: in
> this news. https://solr.apache.org/news.html
>
> Also, SOLR provides guidance how to configure and achieve the same. Refer
> Join Query Parser Definition in solrconfig.xml in below link
> https://solr.apache.org/guide/8_6/other-parsers.html
>
> I have also gone through below link for configuration
> https://kmwllc.com/index.php/2020/07/15/the-cross-collection-join-query/
>
> Please review below configuration for local and other collection, schema
> structure and join query
>
> *Local Collection Name - loc_1 collection*
>
> *Other Collection Name - oth_1 collection*
>
> *loc_id (loc_1 collection) is a join key with oth_id (other collection)*
>
>    1. loc_1 Collection (local collection) -
>
> schema.xml
>
> <field name="loc_id" type="int" indexed="true" stored="true"/>
> <field name="loc_auth" type="int" indexed="true" stored="true"/>
>
> solrconfig.xml file
>
> <queryParser name="join" class="org.apache.solr.search.JoinQParserPlugin">
>     <str name="routerField">loc_id</str>
>     </queryParser>
>
>
>    1. oth_1 Collection (remote collection) -
>
> schema.xml
>
> <field name="oth_id" type="int" indexed="true" stored="true" />
> <field name="oth_auth" type="int" indexed="true" stored="true"
> multiValued="true" />
>
> solrconfig.xml file
>
> <cache name="hash_oth_id"
>        class="solr.CaffeineCache"
>        size="128"
>        initialSize="0"
>        regenerator="solr.NoOpRegenerator"/>
>
> I can successfully execute below query in Local environment with single
> Shard only and retrieve data from both collection. I am passing in local
> collection with fq.
>
> loc_auth:123 OR {!join from=oth_id to=loc_id fromIndex=oth_1}oth_auth:123
>
> But, above query fails with Multiple Shard on QA environment so, with help
> of above links, I have modify solrconfig.xml file as per above. Then
> execute the same query by just adding method=crossCollection. Please refer
> below join query for cross collection which I am passing in fq.
>
> loc_auth:123 OR {!join method=crossCollection from=oth_id to=loc_id
> fromIndex=oth_1}oth_auth:123
>
> It throws error as given here. Please any one can help if I am missing some
> configuration or need any changes in Shared configuration or need to
> re-create the shared structure.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <response>
>
> <lst name="responseHeader">
>   <bool name="zkConnected">true</bool>
>   <int name="status">500</int>
>   <int name="QTime">8</int>
> </lst>
> <lst name="error">
>   <lst name="metadata">
>     <str name="error-class">org.apache.solr.common.SolrException</str>
>     <str name="root-error-class">java.lang.RuntimeException</str>
>   </lst>
>   <str name="msg">java.io.IOException:
> java.util.concurrent.ExecutionException: java.io.IOException: params
>
> method=crossCollection&amp;q=oth_auth:123&amp;fl=oth_id&amp;sort=oth_id+asc&amp;qt=/export&amp;wt=javabin&amp;distrib=false</str>
>   <str name="trace">org.apache.solr.common.SolrException:
> java.io.IOException: java.util.concurrent.ExecutionException:
> java.io.IOException: params
>
> method=crossCollection&amp;q=oth_auth:123&amp;fl=oth_id&amp;sort=oth_id+asc&amp;qt=/export&amp;wt=javabin&amp;distrib=false
>     at
> org.apache.solr.search.join.CrossCollectionJoinQuery$CrossCollectionJoinQueryWeight.getDocSet(CrossCollectionJoinQuery.java:300)
>     at
> org.apache.solr.search.join.CrossCollectionJoinQuery$CrossCollectionJoinQueryWeight.scorer(CrossCollectionJoinQuery.java:311)
>     at org.apache.lucene.search.Weight.scorerSupplier(Weight.java:148)
>     at
> org.apache.lucene.search.BooleanWeight.scorerSupplier(BooleanWeight.java:379)
>     at
> org.apache.lucene.search.BooleanWeight.scorer(BooleanWeight.java:344)
>     at
> org.apache.solr.search.SolrIndexSearcher$FilterImpl$FilterSet.iterator(SolrIndexSearcher.java:2366)
>     at org.apache.solr.search.Filter$1.scorer(Filter.java:133)
>     at org.apache.lucene.search.Weight.bulkScorer(Weight.java:182)
>     at
> org.apache.lucene.search.ConstantScoreQuery$1.bulkScorer(ConstantScoreQuery.java:121)
>     at
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:656)
>     at
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:443)
>     at
> org.apache.solr.search.SolrIndexSearcher.buildAndRunCollectorChain(SolrIndexSearcher.java:211)
>     at
> org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1595)
>     at
> org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1412)
>     at
> org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:596)
>     at
> org.apache.solr.handler.component.QueryComponent.doProcessUngroupedSearch(QueryComponent.java:1500)
>     at
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:390)
>     at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:369)
>     at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.ja
>


-- 
Sincerely yours
Mikhail Khludnev

Reply via email to