【发布时间】: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 源代码。
【问题讨论】:
-
你是如何运行 jar 的?你的依赖项在你的类路径中吗?
-
我通过maven-assembly-plugin将依赖包打包到最终jar中,并执行
java -jar xxx-jar-with-dependencies.jar
标签: java maven elasticsearch jdbc