Я получаю исключение во время выполнения, когда я делаю следующий простой вызов для ping my solr на localhost.
public static void main(String[] args) throws SolrServerException, IOException
{
String url = "http://127.0.0.1:8983/solr/#";
HttpSolrServer solrServer = new HttpSolrServer(url);
solrServer.ping();
}
Журнал исключений:
Exception in thread "main" java.lang.RuntimeException: Invalid version (expected 2, but 60) or the data in not in 'javabin' format
at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:109)
at org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser. java:41)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:407)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:180)
at org.apache.solr.client.solrj.request.SolrPing.process(SolrPing.java:69)
at org.apache.solr.client.solrj.SolrServer.ping(SolrServer.java:293)
at com.tradus.LocalSolrDataAdd.main(LocalSolrDataAdd.java:26)
Может кто-то объяснить, как мы можем избавиться от этой, по-видимому, очень странной ошибки.
Вот версия кода, которая, по-видимому, соответствует вашей stacktrace:
Кажется, что код пытается проверить номер версии ответа на запрос "ping". Ваш клиент Solr получает ответ, который он не понимает. И я предполагаю, что что-то было неправильно сконфигурировано... или вы указали неверный URL.
Получение версии "60" вместо "2" кажется маловероятным. Я предполагаю, что "60" на самом деле является <
символом... который предлагает мне, что у вас есть XML или HTML, а не двоичный ответ. В последнем случае это может быть страница из контейнера приложения, сообщающая вам, что она не понимает ваш запрос... или что-то в этом роде.
Я предлагаю вам проверить файлы журнала сервера, чтобы узнать, какие запросы он получает. Если это не удается, попробуйте захватить сетевой трафик на/из вашего клиента.
Использование #
неверно:
String url = "http://127.0.0.1:8983/solr/#";// [#] is wrong!!!
Это должно быть правильное использование:
String url = "http://127.0.0.1:8983/solr/collection1; is ok!!!
HttpSolrServer solrServer = new HttpSolrServer(url);
solrServer.ping();
Обычно это происходит из-за разной версии между solr-клиентом и сервером solr.