2016-08-02 7 views
2

Я пытался индексировать от apache nutch до кластера ES одного узла и получил эту ошибку.Проблема при индексировании на поиск elastics из apache nutch

org.elasticsearch.transport.RemoteTransportException: Не удалось десериализации ответа исключения из потока вызвано следующими причинами: org.elasticsearch.transport.TransportSerializationException: Не удалось десериализации ответа исключения из потока на org.elasticsearch.transport. netty.MessageChannelHandler.handlerResponseError (MessageChannelHandler.java:173) на org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived (MessageChannelHandler.java:125) на org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandl er.java:70) на org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) в org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream (DefaultChannelPipeline. Java: 791) на org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (Channels.java:296) на org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived (FrameDecoder. java: 462) по адресу org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode (FrameDecoder.java:443) по адресу org.elasticsearch.common.netty.han dler.codec.frame.FrameDecoder.messageReceived (FrameDecoder.java:303) на org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandler.java:70) на org.elasticsearch.common.netty. channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) на org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:559) на org.elasticsearch.common.netty.channel.Channels. fireMessageReceived (Channels.java:268) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (Channels.java:255) at org.elastics earch.common.netty.channel.socket.nio.NioWorker.read (NioWorker.java:88) по адресу org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process (AbstractNioWorker.java:108) на org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run (AbstractNioSelector.java:318) на org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run (AbstractNioWorker.java : 89) на org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run (NioWorker.java:178) на org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run (ThreadRenamingRunnable.java : 108) по адресу org.elasticsearch.common.netty.ut il.internal.DeadLockProofWorker $ 1.run (DeadLockProofWorker.java:42) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor .java: 617) на java.lang.Thread.run (Thread.java:745) Вызванный: java.io.StreamCorruptedException: Неподдерживаемые версии: 1 в org.elasticsearch.common.io.ThrowableObjectInputStream.readStreamHeader (ThrowableObjectInputStream .java: 46) at java.io.ObjectInputStream. (ObjectInputStream.Java: 301) в org.elasticsearch.common.io.ThrowableObjectInputStream (ThrowableObjectInputStream.java:38) на org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError (MessageChannelHandler.java:170) ... более 23.

Из дальнейших исследований я узнал, что должен иметь такую ​​же версию jvm на клиентском и ES-сервере. Справка: http://jontai.me/blog/2013/06/elasticsearch-remotetransportexception-failed-to-deserialize-exception-response-from-stream/

Я использую ES версии 2.3.2 и моя JVM версии "1.8.0_91". Когда я проверил /plugins/indexer-elastic/plugin.xml, указанная версия 1.4.1. Я хотел бы знать, что это может быть проблемой и возможным решением, кроме как для понижения версии кластера ES. Я хотел бы продолжить работу с ES 2.3.2. Пожалуйста помоги мне с этим.

PS: Команда я использовал для индексирования bin/nutch index crawl/crawldb/ -linkdb crawl/linkdb/ crawl/segments/20160801174223/

ответ

1

Из дальнейших исследований я получил решение. Ошибка возникает из-за несоответствия версии в плагине индексатора nutch (который был ES 1.4.1).

Одно решения это загрузить источник из https://github.com/apache/nutch/blob/master/, а затем настроить версию плагина с вашей упругим версией сервера, следуя эти инструкции, приведенные в SRC/плагин/индексатор эластичного/howto_upgrade_es.txt.

  1. Upgrade elasticsearch зависимость в ИПВ/плагин/индексатор-упругом/ivy.xml

  2. Обновление конкретных зависимостей Elasticsearch в ИПВ/плагин/индексатор-эластичная/plugin.xml Чтобы получить список из зависимостей и их версий выполнить: $ муравей -f ./build-ivy.xml
    $ Ls/Lib

  3. сборки из папки Nutch источника с помощью муравей или любой другой инструмент сборки.

Тогда мы можем индекс ElasticSearch без этого вопроса. Cheers :)