diff --git a/docs/reference/toc.yml b/docs/reference/toc.yml index 89d47d2df..0750df471 100644 --- a/docs/reference/toc.yml +++ b/docs/reference/toc.yml @@ -42,6 +42,8 @@ toc: - file: no-such-method-request-options.md - file: io-reactor-errors.md - file: serialize-without-typed-keys.md + - file: could-not-resolve-dependencies.md + - file: no-class-def-found-error.md - folder: transport children: diff --git a/docs/reference/troubleshooting/could-not-resolve-dependencies.md b/docs/reference/troubleshooting/could-not-resolve-dependencies.md new file mode 100644 index 000000000..2d8b6f27c --- /dev/null +++ b/docs/reference/troubleshooting/could-not-resolve-dependencies.md @@ -0,0 +1,9 @@ +--- +navigation_title: Could not resolve dependencies +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/could-not-resolve-dependencies.html +--- + +# Could not resolve dependencies + +Check the [Known Issues](/release-notes/known-issues.md#known-issues-8-16-7) diff --git a/docs/reference/troubleshooting/index.md b/docs/reference/troubleshooting/index.md index 9922f95d4..c63ff6cf0 100644 --- a/docs/reference/troubleshooting/index.md +++ b/docs/reference/troubleshooting/index.md @@ -10,6 +10,8 @@ mapped_pages: * [](missing-required-property.md) * [](no-such-method-request-options.md) * [](io-reactor-errors.md) +* [](could-not-resolve-dependencies.md) +* [](no-class-def-found-error.md) ## Miscellaneous diff --git a/docs/reference/troubleshooting/no-class-def-found-error.md b/docs/reference/troubleshooting/no-class-def-found-error.md new file mode 100644 index 000000000..e7cab58d8 --- /dev/null +++ b/docs/reference/troubleshooting/no-class-def-found-error.md @@ -0,0 +1,9 @@ +--- +navigation_title: "NoClassDefFoundError: LogFactory" +mapped_pages: + - https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/no-class-def-found-error.html +--- + +# `NoClassDefFoundError`: org/apache/commons/logging/LogFactory + +Check the [Known Issues](/release-notes/known-issues.md#known-issues-9-0-0) diff --git a/docs/release-notes/9-0-0.md b/docs/release-notes/9-0-0.md index 159ecdfbb..c7b25a216 100644 --- a/docs/release-notes/9-0-0.md +++ b/docs/release-notes/9-0-0.md @@ -7,6 +7,40 @@ Discover what changed in the 9.0.0 version of the Java client. ### Breaking changes [elasticsearch-java-client-900-breaking-changes] +::::{dropdown} Java version update +While previous versions of the client used to target Java 8, from version 9.0 forward the client will target Java 17. + +**Impact**
+Any project that targets Java 8 and needs to import version 9.0 of the elasticsearch Java client. + +**Action**
+Projects that import version 9.0 of the elasticsearch Java client as a dependency will have to be updated to be compatible Java 17. + +:::: + +::::{dropdown} RestClient optional dependency +The new version of the client introduces the [Rest5Client](/reference/transport/rest5-client/index.md) as an alternative to the legacy RestClient. The RestClient is part of the external dependency `elasticsearch-rest-client`, which is now optional since an alternative is available. + +**Impact**
+Any project updating the elasticsearch Java client. + +**Action**
+Either update the code to use the new [Rest5Client](/reference/transport/rest5-client/index.md) or import the `elasticsearch-rest-client` dependency: +```kotlin +// gradle +implementation("org.elasticsearch.client:elasticsearch-rest-client:9.0.0") +``` +```xml + + + org.elasticsearch.client + elasticsearch-rest-client + 9.0.0 + +``` + +:::: + ::::{dropdown} Server accurate aggregation number values In previous versions of the client, when the server returned number that was both always present and could be `null` (for example Aggregation results), the client would default to `0` and deserialize the number into a primitive data type instead of an Object. This design choice was changed in this version, changing the fields type to support `null` and be coherent with the server response. @@ -329,7 +363,7 @@ ElasticsearchClient esClient = ElasticsearchClient.of(b -> b .apiKey(apiKey) ); ``` -The classic version of the builder is still available, both with the new `Rest5Client` and the legacy `RestClient`; while the `Rest5Client` is included with the java client's dependency, the legacy `RestClient` must be imported separately: +The classic version of the builder is still available, both with the new `Rest5Client` and the legacy `RestClient`; while the `Rest5Client` is included with the Java client's dependency, the legacy `RestClient` must be imported separately: ``` implementation("org.elasticsearch.client:elasticsearch-rest-client:9.0.0") ``` diff --git a/docs/release-notes/known-issues.md b/docs/release-notes/known-issues.md index 831cfd66b..7529e30ce 100644 --- a/docs/release-notes/known-issues.md +++ b/docs/release-notes/known-issues.md @@ -6,3 +6,50 @@ navigation_title: "Known issues" # Elasticsearch Java Client known issues [elasticsearch-java-client-known-issues] We handle all of our issues in our [Github repo](https://github.com/elastic/elasticsearch-java/issues). + +### 8.16.7 [known-issues-8-16-7] + +8.16.7 is the first patch released without a matching rest-client version, so the `elasticsearch-rest-client` dependency is missing, causing the following exception: +``` +Could not resolve dependencies for project +[ERROR] dependency: org.elasticsearch.client:elasticsearch-rest-client:jar:8.16.7 (compile) +[ERROR] Could not find artifact org.elasticsearch.client:elasticsearch-rest-client:jar:8.16.7 in central (https://repo.maven.apache.org/maven2) +``` +To use this version of the client, set the latest available version explicitly in the project: +```kotlin +// gradle +implementation("org.elasticsearch.client:elasticsearch-rest-client:8.16.6") +``` +```xml + + + org.elasticsearch.client + elasticsearch-rest-client + 8.16.6 + +``` + +### 9.0.0 [known-issues-9-0-0] + +The latest major version of the client doesn't depend on `elasticsearch-rest-client` anymore, as the new built in Rest5Client is available, but it does depend on the Apache `commons-logging` dependency, which is missing, causing the following exception: +``` +Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory + at co.elastic.clients.transport.rest5_client.low_level.Rest5Client.(Rest5Client.java:115) + at co.elastic.clients.transport.rest5_client.Rest5ClientTransport.buildRest5Client(Rest5ClientTransport.java:65) + at co.elastic.clients.transport.rest5_client.Rest5ClientTransport.(Rest5ClientTransport.java:42) + at co.elastic.clients.transport.ElasticsearchTransportConfig$Default.buildTransport(ElasticsearchTransportConfig.java:110) + at co.elastic.clients.elasticsearch.ElasticsearchClient.of(ElasticsearchClient.java:190) +``` +To use the new Rest5Client, add the `commons-logging` dependency: +```kotlin +// gradle +implementation("commons-logging:commons-logging:1.3.5") +``` +```xml + + + commons-logging + commons-logging + 1.3.5 + +```