【问题标题】:The [0.0.0] version of the [jdbc] client is not compatible with Elasticsearch version [7.10.0];][jdbc]客户端的[0.0.0]版本与Elasticsearch版本[7.10.0]不兼容;]
【发布时间】:2021-06-14 15:42:35
【问题描述】:

打包后的Elasticsearch JDBC驱动版本有一个奇怪的问题。

<dependency>
    <groupId>org.elasticsearch.plugin</groupId>
    <artifactId>x-pack-sql-jdbc</artifactId>
    <version>7.10.0</version>
</dependency>

当我在 IDEA 中运行我的代码以访问 Elasticsearch 时,它可以正常工作。

接下来,我执行mvn package 来获取一个带有依赖关系的jar。 当我运行这个jar访问Elasticsearch时,报错如下:

java.sql.SQLException: Server sent bad type [action_request_validation_exception]. Original type was [Validation Failed: 1: The [0.0.0] version of the [jdbc] client is not compatible with Elasticsearch version [7.10.0];]. [org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: The [0.0.0] version of the [jdbc] client is not compatible with Elasticsearch version [7.10.0];
        at org.elasticsearch.action.ValidateActions.addValidationError(ValidateActions.java:26)
        at org.elasticsearch.xpack.sql.action.AbstractSqlQueryRequest.validate(AbstractSqlQueryRequest.java:239)
        at org.elasticsearch.xpack.sql.action.SqlQueryRequest.validate(SqlQueryRequest.java:79)
        at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:144)
        at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:83)
        at org.elasticsearch.client.node.NodeClient.executeLocally(NodeClient.java:86)
        at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:75)
        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:412)
        at org.elasticsearch.xpack.sql.plugin.RestSqlQueryAction.lambda$prepareRequest$0(RestSqlQueryAction.java:116)
        at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:115)
        at org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:88)
        at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:258)
        at org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:340)
        at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:191)
        at org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:319)
        at org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:384)
......

估计打包的时候版本元数据有问题,但是没找到解决办法。

我发现了一些可能有用的 Elasticsearch 源代码。

https://github.com/elastic/elasticsearch/blob/master/x-pack/plugin/sql/sql-client/src/main/java/org/elasticsearch/xpack/sql/client/ClientVersion.java#L112

【问题讨论】:

  • 你是如何运行 jar 的?你的依赖项在你的类路径中吗?
  • 我通过maven-assembly-plugin将依赖包打包到最终jar中,并执行java -jar xxx-jar-with-dependencies.jar

标签: java maven elasticsearch jdbc


【解决方案1】:

根据https://github.com/elastic/elasticsearch/blob/master/x-pack/plugin/sql/sql-client/src/main/java/org/elasticsearch/xpack/sql/client/ClientVersion.java#L112

我在pom.xml中添加如下配置,问题就解决了。

<manifestEntries>
    <X-Compile-Elasticsearch-Version>7.10.0</X-Compile-Elasticsearch-Version>
</manifestEntries>

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多