【发布时间】:2013-04-03 13:05:15
【问题描述】:
我正在尝试对我的本地 solr 服务器(单实例)运行查询。
我还在为 id 添加过滤器。
因此,如果有 10000 个 id,我会创建 10 个过滤查询,每个查询由 1000 个 id 组成。
过滤查询如下所示:
"id:(1 2 3 n)"
我也在使用 Solrj,所以它是这样的:
query.addFilterQuery("id:(1 2 3 n)");
但是在某个阈值之后(5 分钟前是 1000,现在大约是 800),我开始收到异常:
org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request
Caused by: org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://localhost:8080/solr
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.impl.LBHttpSolrServer.request(LBHttpSolrServer.java:447)
... 37 more
Caused by: java.net.SocketException: Software caused connection abort: recv failed
我搜索了一下,但只发现了 maxBoolean 查询,这可能不是我的情况
【问题讨论】:
-
我找到了解决方案。事实证明,默认情况下 Solrj 使用 GET 而不是 POST。修复的简单方法是使用 server.query(query, SolrRequest.METHOD.POST)。
标签: exception solr connection abort