我有一个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);
}
答案 0 :(得分: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);
}
答案 1 :(得分:0)
不应该是: -
SolrServer server = new HttpSolrServer("http://localhost:8983/solr");
请参阅以下链接中的接受答案: -