java - 使用solrj创建索引时遇到的奇怪问题?
问题描述
@RequestMapping(value = '/solr', method = RequestMethod.GET)
public void getSolr() throws SolrServerException, IOException { String urlString = 'http://192.168.10.129:8983/solr/mycore'; SolrClient client = new HttpSolrClient.Builder(urlString).build(); SolrInputDocument doc = new SolrInputDocument(); doc.addField('id', 'c'); client.add(doc); client.commit();}
就是创建个索引,然后就报错啦
Caused by: org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://192.168.10.129:8983/so...
at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:624)at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:279)at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:268)at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:160)at org.apache.solr.client.solrj.SolrClient.commit(SolrClient.java:484)at org.apache.solr.client.solrj.SolrClient.commit(SolrClient.java:463)at com.ansel.testall.solrController.getSolr(solrController.java:23)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)... 52 common frames omitted
Caused by: org.apache.http.NoHttpResponseException: 192.168.10.129:8983 failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:257)at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:207)at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:684)at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486)at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:515)... 71 common frames omitted
doc是被add进去了,但是commit失败了。
如果把add doc和commit分成2次请求就没问题了,如下:
@RequestMapping(value = '/solr', method = RequestMethod.GET) public void getSolr() throws SolrServerException, IOException {String urlString = 'http://192.168.10.129:8983/solr/mycore';SolrClient client = new HttpSolrClient.Builder(urlString).build();SolrInputDocument doc = new SolrInputDocument();doc.addField('id', 'c');client.add(doc); } @RequestMapping(value = '/solr2', method = RequestMethod.GET) public void getSolr2() throws SolrServerException, IOException {String urlString = 'http://192.168.10.129:8983/solr/mycore';SolrClient client = new HttpSolrClient.Builder(urlString).build();client.commit(); }
执行query操作也没有问题。
solr:6.60
jdk:1.8
iteye上一个类似的情况:
http://www.iteye.com/problems...
问题解答
回答1:临时解决方案,使用如下方法提交:
UpdateRequest req = new UpdateRequest();req.setAction(UpdateRequest.ACTION.COMMIT, false, false);req.add(doc);UpdateResponse rsp = req.process(client);
https://wiki.apache.org/solr/...上找到的,这个是部分译文http://www.cnblogs.com/llz502...
为什么这样就可以了呢?还是好奇怪
相关文章:
1. java - 创建maven项目失败了 求解决方法2. node.js - 函数getByName()中如何使得co执行完后才return3. 一个走错路的23岁傻小子的提问4. python - 如何使用pykafka consumer进行数据处理并保存?5. javascript - SuperSlide.js火狐不兼容怎么回事呢6. 运行python程序时出现“应用程序发生异常”的内存错误?7. 主从备份 - 跪求mysql 高可用主从方案8. javascript - git clone 下来的项目 想在本地运行 npm run install 报错9. mysql主从 - 请教下mysql 主动-被动模式的双主配置 和 主从配置在应用上有什么区别?10. python - django 里自定义的 login 方法,如何使用 login_required()
