1

我有一个 solr 实例正在运行,并且能够通过浏览器访问它并使用 Admin 运行查询。但是,当我尝试通过 Eclipse 中的 Java 代码访问它时,我收到以下错误:

Exception in thread "main" org.apache.solr.common.SolrException: Server at   http://localhost:8983/solr returned non ok status:404, message:Not Found
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:372)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:181)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:90)
at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301)
at testClass.main(testClass.java:18)

这是我正在运行的代码:

public static void main(String[] args) throws MalformedURLException, SolrServerException {
    SolrServer server = new HttpSolrServer("http://localhost:8983/solr/");
    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set("myParam", "myValue");
    QueryResponse response = server.query(params);
}
4

2 回答 2

1

事实证明我有两个错误:

1)我的设置实际上有一个嵌套的 solr 目录,所以我需要添加另一个“solr”级别。

2) 我错误地设置了 params 变量。发送的第一个参数应该是“q”,第二个参数是“name:value”对。

更新的示例,包括一次传递多个参数:

public static void main(String[] args) throws MalformedURLException, SolrServerException {
    SolrServer server = new HttpSolrServer("http://localhost:8983/solr/solr/");
    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set("q", "param1:value1 AND param2:value2");
    QueryResponse response = server.query(params);
    System.out.println("response = " + response);
}
于 2013-01-07T18:21:19.520 回答
0

不应该是:-

 SolrServer server = new HttpSolrServer("http://localhost:8983/solr");

请参阅以下链接中接受的答案:-

通过 Solrj 查询 Solr:基础

于 2013-01-07T17:11:23.150 回答