我在实例上有几个 Solr 核心,每个核心都配置了一个StandardRequestHandler
和一些自定义请求处理程序,例如:
<requestDispatcher handleSelect="true" >
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
</requestDispatcher>
...
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
...
<requestHandler name="/custom" class="com.example.our.package.CustomHandler" />
...
我希望能够通过 SolrJ 访问它们,但是,我只能通过设置对象的baseUrl
属性来做到这一点HttpSolrServer
。然而,这是不可取的,因为实例是在多个线程之间共享的HttpSolrServer
,所以会出现竞争条件。另一个原因是团队的共识在于为简单起见HttpSolrServer
进行Singleton
范围划分。
我尝试的是这样的:
HttpSolrServer server = new HttpSolrServer("http://URL_OF_SOLR:PORT/solr/");
SolrQuery query = new SolrQuery();
query.setQueryType("/core/custom");
这适用于自定义处理程序,但是在调用时它会失败并显示代码 400 /select
,至少对于我尝试过的 URL(/core
、、、、/core/select
)/core/
等/core/standard
。
所以我的问题是:我应该如何定义这个查询以正确引用核心的默认请求处理程序,只使用queryType
或其他一些SolrParams
值?