使用大量过滤运行Solr Query时出现SocketException

时间:2013-04-03 13:05:16

标签: exception solr connection abort

我正在尝试对本地solr服务器(单实例)运行查询。 我也在为ids添加过滤器 因此,对于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

我google了一下,但发现只有maxBoolean查询,这可能不是我的情况

1 个答案:

答案 0 :(得分:0)

是的,Igor,
你是对的。
默认情况下,Solrj使用GET而不是POST。 所以你必须使用server.query(query,SolrRequest.METHOD.POST)。