1

我想從我的駱駝客戶端項目擊中遠端彈性搜索羣集,並得到錯誤的「java.lang.IllegalStateException:從不受支持的版本收到的消息: 2.0.0]最小兼容版本是:[5.0.0]「。請找到代碼片段。駱駝與彈性搜索版本問題不受支持的版本:2.0.0]

的pom.xml

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-elasticsearch</artifactId> 
    <version>2.18.1</version> 
</dependency> 

blueprint.xml從節點

<route id="timerToLog"> 
     <from uri="timer:foo?period=5000" /> 
     <setBody> 
      <method ref="helloBean" method="hello" /> 
     </setBody>   
     <to uri="elasticsearch://test-poc?ip=127.0.01&amp;port=9300&amp;operation=INDEX&amp;indexName=testindex&amp;indexType=sampletxn" />   
    </route> 

錯誤日誌: -

[2017-01-09T18:04:14,887][WARN ][o.e.t.n.Netty4Transport ] [127.0.01] exception caught on transport layer [[id: 0x5c33c900, L:/127.0.01:9300 - R:/10.132.245.194:64393]], closing connection 
java.lang.IllegalStateException: Received message from unsupported version: [2.0.0] minimal compatible version is: [5.0.0] 
    at org.elasticsearch.transport.TcpTransport.messageReceived(TcpTransport.java:1236) ~[elasticsearch-5.1.1.jar:5.1.1] 
    at org.elasticsearch.transport.netty4.Netty4MessageChannelHandler.channelRead(Netty4MessageChannelHandler.java:74) ~[transport-netty4-5.1.1.jar:5.1.1] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) [netty-codec-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:280) [netty-codec-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:396) [netty-codec-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-codec-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:651) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:536) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:490) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:450) [netty-transport-4.1.6.Final.jar:4.1.6.Final] 
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873) [netty-common-4.1.6.Final.jar:4.1.6.Final] 
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111] 

任何人都可以提出請如何解決這個問題。

回答

2

所以這是一個有點教育的猜測,但我實際上剛剛遇到同一個版本的兩個相同的問題。我相信這是駱駝2.18.1和最新版本的elasticsearch固有的版本不匹配。我下載了駱駝elasticsearch來源,並期待在頂層POM,看到這一點:

<dependency> 
    <groupId>org.elasticsearch</groupId> 
    <artifactId>elasticsearch</artifactId> 
    <version>${elasticsearch-version}</version> 
</dependency> 

變量elasticsearch-version設置爲2.3.5父POM(https://github.com/apache/camel/blob/camel-2.18.x/parent/pom.xml),因此按道理它會以此消息失敗。

不幸的是,看起來我們要麼必須適應使用某種elasticsearch API爲5.x或降級elasticsearch。這很不幸。

編輯:它看起來像它現在設置爲2.4.3(https://github.com/apache/camel/blob/8c434ef27742aa85d1763b1c3d4ab4fe9d8428a6/parent/pom.xml)在最新提交,所以我們可能要稍等一下,讓他們迎頭趕上。 2.4是根據自己的文檔(這真是個奇怪的編號系統?),所以它可能不會太長,甚至下一個版本5.x的前最新的版本,但我不會屏住了呼吸。

+0

非常感謝詳細的解釋,現在我清楚這個駱駝彈性搜索版本不匹配。最後,我決定使用傳輸客戶端而不是這個。 – Som

+0

是的,我正在考慮使用elasticsearch Java API,並且在駱駝的bean中調用它。我不確定這是否是最好的方法,但至少它應該工作。 –

+0

另外,你會介意將此標記爲接受的答案嗎? –