Received message from unsupported version: [2.0.0] minimal compatible version is: [6.8.0]

Iam trying to integrate ElasticSearch with Microsoft SQL Server 2016 and I get this error :

java.lang.IllegalStateException: Received message from unsupported version: [2.0.0] minimal compatible version is: [6.8.0]
        at org.elasticsearch.transport.InboundMessage.ensureVersionCompatibility(InboundMessage.java:146) ~[elasticsearch-7.5.0.jar:7.5.0]
        at org.elasticsearch.transport.InboundMessage.access$000(InboundMessage.java:39) ~[elasticsearch-7.5.0.jar:7.5.0]
        at org.elasticsearch.transport.InboundMessage$Reader.deserialize(InboundMessage.java:76) ~[elasticsearch-7.5.0.jar:7.5.0]
        at org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:113) ~[elasticsearch-7.5.0.jar:7.5.0]
        at org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:102) ~[elasticsearch-7.5.0.jar:7.5.0]
        at org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:667) [elasticsearch-7.5.0.jar:7.5.0]
        at org.elasticsearch.transport.netty4.Netty4MessageChannelHandler.channelRead(Netty4MessageChannelHandler.java:62) [transport-netty4-client-7.5.0.jar:7.5.0]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:326) [netty-codec-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:300) [netty-codec-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:241) [netty-handler-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:600) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:554) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) [netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) [netty-common-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.43.Final.jar:4.1.43.Final]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231]

Can someone help me get this resolved ? I realize that there are threads that deal with the exact same problem but none of them has a definitive solution.

command that I use to run:
"%JAVA_HOME%\bin\java" -cp "%LIB%" -Dlog4j.configurationFile="%BIN%\log4j2.xml" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter" "statefile.json"

My statefile.json is:

{
  "type": "jdbc",
  "jdbc": {
    "url": "jdbc:sqlserver://wksp00012345;databaseName=MQ",
    "user": "sa",
    "password": "Password1234",
    "sql": "select Host, Status, AWX_JOB_ID, TS from dbo.inv_tracker_0919",
    "treat_binary_as_string": true,
    "elasticsearch": {
      "cluster": "elasticsearch",
      "host": "localhost",
      "port": 9300,
      "autodiscover": "true"
    },
    "index": "inv_tracker_0919",
    "type": "inv_tracker_0919"
  }
}

So far I have tried changing port to 9200, tried with the JDK version that comes with Elastic search and the Oracle JDK but I get the same error.

My ES node details:

C:\>curl http://localhost:9200/
{
  "name" : "WKSP123",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "bf9rnqVkTgqxodt9UBulsg",
  "version" : {
    "number" : "7.5.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "e9ccaed468e2fac2275a3761849cbee64b39519f",
    "build_date" : "2019-11-26T01:06:52.518245Z",
    "build_snapshot" : false,
    "lucene_version" : "8.3.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Microsoft JDBC Driver used ( ver 6.0) :
https://www.microsoft.com/en-us/download/details.aspx?id=11774

Any help will be greatly appreciated.

Please be descriptive. ( New to ES ) !

Thanks

Welcome!

It sounds like that the tool you are using is using an old version of elasticsearch client (2.x) which is definitely not compatible with elasticsearch 7.x.

If this project has a more recent version, use it. Otherwise have a look at Logstash and its jdbc input plugin.

@dadoonet
Thanks for the quick response. Iam not using any special tool or project. Just using what came with Elastic search 7.5. The only other things that I downloaded were the the JDBC Driver (tried version 6.0 an 4.2 so far) from Microsoft and the elastic search jdbc plugin version 2.3.4.1 from here : http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/

The steps I have followed are listed here : https://hintdesk.com/2016/08/12/how-to-connect-elasticsearch-to-ms-sql-server/

The only difference I have in my steps is Step-5 where I have moved all the importer settings into a statefile.json and I pass that as an argument to the java command line parameters as shown in my previous post.

Anyhow how do I find out what version of ElasticSearch Client Iam using ? The curl command curl http://localhost:9200/ only lists the Eleastic Serach server(?) version of 7.5

Thanks

This project ((http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/) is not part of elasticsearch.
You probably downloaded it from somewhere but not from elastic website.

Thanks. What are my standard/native ES options to integrate with MS SQL Server 2016 ? Would greatly appreciate ay examples/walk-through/detailed explanation.

I shared most of my thoughts there: http://david.pilato.fr/blog/2015/05/09/advanced-search-for-your-legacy-application/

Basically, I'd recommend modifying the application layer if possible and send data to elasticsearch in the same "transaction" as you are sending your data to the database.

I shared most of my thoughts there: http://david.pilato.fr/blog/2015/05/09/advanced-search-for-your-legacy-application/

Too high level and doesnt appear to be MSS SQL specific. Where can I find step-by-step explicit instructions for dummies to integrate with MS SQL Server 2016 ?

Basically, I'd recommend modifying the application layer if possible and send data to elasticsearch in the same "transaction" as you are sending your data to the database.

absolutely no idea what that means. There are no transactions in what Iam trying ( unless a SQL stmt is considered a transaction ) nor did I write any app to control anything. Can you kindly be more explicit/elaborate/detailed ?

Is there a detailed explanation on your website somewhere that I can use to integrate with MSSQL ?

I don't know.

Give a try to logstash and its jdbc input plugin if you don't want to try the proposal I shared in my blog post.

Even old, you can read also this which could help you: https://www.elastic.co/blog/logstash-jdbc-input-plugin

The reference guide is up to date and also contains useful information : https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

If you are not successful, please share what you tried so far and what is failing. May be in #logstash forum if you are using logstash.

That article helped me to get the ELK stack integrated with MSSQL.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.