从solrj获取请求网址

时间:2015-04-09 22:16:24

标签: java solr solrj

我正在使用solrj查询索引,有时会启动重新索引。

我们遇到了一些服务器问题,所以我想验证url solrj正在构建。这就是我的尝试:

public void indexSolr() throws SolrServerException, IOException {
    HttpSolrServer solr = new HttpSolrServer(solrIndexPath);
    logger.info("Indexing cp solr at " + solrIndexPath);

    // reindex to pickup new articles
    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set("qt", "/" + solrDataImportPath);
    params.set("command", "full-import");
    params.set("clean", "true");
    params.set("commit", "true");
    QueryResponse response = solr.query(params);
    logger.info("index url: " + response.getRequestUrl());
}

问题在于最后一行。 getRequestUrl()始终为空。我知道solrj确实在调用solr,因为它确实启动了一个索引请求(大部分时间)。

如何拦截或检索网址solrj正在构建我的请求?

1 个答案:

答案 0 :(得分:2)

正如How can I transform SolrQuery(SOLRJ) to URL?中所述,您可以使用ClientUtils.toQueryString来解决此问题。

在javadoc中,您可以看到此辅助方法接受SolrParams作为输入,这就是您所拥有的。要获取完整的URL,您需要将其与代码示例中的solrIndexPath连接起来。

System.out.println(solrIndexPath + ClientUtils.toQueryString(params, false));

应该这样做。