简体   繁体   English

与服务器对话时发生Solrj IOException

[英]Solrj IOException occured when talking to server

I am using basic authentication. 我正在使用基本身份验证。 My solr version is 4.1. 我的Solr版本是4.1。 I can get query results but when I try to index documents I am getting the following error message: 我可以获得查询结果,但是当我尝试为文档建立索引时,出现以下错误消息:

org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://192.168.0.1:8983/solr/my_core
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:416)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:181)
    at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
    at warningletter.Process.run(Process.java:128)
    at warningletter.WarningLetter.parseListPage(WarningLetter.java:81)
    at warningletter.WarningLetter.init(WarningLetter.java:47)
    at warningletter.WarningLetter.main(WarningLetter.java:21)
Caused by: org.apache.http.client.ClientProtocolException
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:353)
    ... 8 more
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:625)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    ... 11 more

This is my code piece: 这是我的代码:

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user", "password"));
HttpSolrServer server = new HttpSolrServer("http://192.168.0.1:8983/solr/warning_letter/", httpclient);
SolrInputDocument solrDoc = new SolrInputDocument();
solrDoc.addField("id", "id1");
solrDoc.addField("letter", "letter");
server.add(solrDoc);
server.commit();

What am I doing wrong? 我究竟做错了什么?

The trick is to use the preemptive authentication so as to avoid the need to repeat the query after the "unauthorized" response is sent. 诀窍是使用抢占式身份验证,以避免在发送“未经授权”响应后重复查询。 Here is the example Preemptive Basic authentication with Apache HttpClient 4 这是使用Apache HttpClient 4的示例抢先基本身份验证

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM