Я пытаюсь запустить запрос на мой локальный сервер solr (один экземпляр). Я также добавляю фильтры для идентификаторов.
Итак, в случае 10000 идентификаторов я создаю 10 фильтрующих запросов, каждый из которых состоит из 1000 идентификаторов.SocketException во время работы Solr Query с большим количеством фильтрации
Фильтр запроса выглядит следующим образом:
"id:(1 2 3 n)"
Я также использую Solrj так это выглядит:
query.addFilterQuery("id:(1 2 3 n)");
Но после некоторого порога (это было 1000 5 минут назад, и теперь это вокруг 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
Я искал googled вокруг, но нашел только о maxB oolean запросы, которые не относятся к моему делу, вероятно,
Я нашел решение. Оказывается, что по умолчанию Solrj использует GET вместо POST. Простым способом исправить является использование server.query (query, SolrRequest.METHOD.POST). –