我使用"隐式路由器"在创建我的集合时,我使用SolrJ访问Solr。在这种模式下,我通过提供名为 route 的参数来执行查询请求。但是,如果我想调用CloudSolrServer的deleteByQuery()
方法,我该如何设置此参数?我只想将我的请求传递给正确的碎片,而不是所有碎片,我不知道如何获得它。
答案 0 :(得分:2)
幸运的是,我已经找到了答案。当我阅读CloudSolrServer的源代码时,我创建了以下方法:
public UpdateResponse deleteByQuery(String query) throws SolrServerException, IOException {
return new UpdateRequest().deleteByQuery( query ).process( this );
}
UpdateResponse类有一个方法setParam()。
所以,最终的代码如下:
UpdateRequest deleteRequest = new UpdateRequest();
deleteRequest.setParam("_route_", shardId);
UpdateResponse reponse = deleteRequest.deleteByQuery(delQuery).process(cloudSolrServer_);
我已经尝试过,发现没有问题。