Upgrade to Elasticsearch 8.3.3.

Original Pull Request #2244
Closes #2242
This commit is contained in:
Peter-Josef Meisch 2022-07-30 18:34:22 +02:00 committed by GitHub
parent 1f1076aa8b
commit 7620222f89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 29 deletions

View File

@ -21,7 +21,7 @@
<!-- version of the RestHighLevelClient --> <!-- version of the RestHighLevelClient -->
<elasticsearch-rhlc>7.17.5</elasticsearch-rhlc> <elasticsearch-rhlc>7.17.5</elasticsearch-rhlc>
<!-- version of the new ElasticsearchClient --> <!-- version of the new ElasticsearchClient -->
<elasticsearch-java>8.3.2</elasticsearch-java> <elasticsearch-java>8.3.3</elasticsearch-java>
<log4j>2.17.2</log4j> <log4j>2.17.2</log4j>
<netty>4.1.65.Final</netty> <netty>4.1.65.Final</netty>

View File

@ -29,15 +29,15 @@ Requires an installation of https://www.elastic.co/products/elasticsearch[Elasti
[[preface.versions]] [[preface.versions]]
=== Versions === Versions
The following table shows the Elasticsearch versions that are used by Spring Data release trains and version of The following table shows the Elasticsearch versions that are used by Spring Data release trains and version of
Spring Data Elasticsearch included in that, as well as the Spring Boot versions referring to that particular Spring Spring Data Elasticsearch included in that, as well as the Spring Boot versions referring to that particular Spring
Data release train. The Elasticsearch version given shows with which client libraries Spring Data Elasticsearch was Data release train. The Elasticsearch version given shows with which client libraries Spring Data Elasticsearch was
built and tested. built and tested.
[cols="^,^,^,^,^",options="header"] [cols="^,^,^,^,^",options="header"]
|=== |===
| Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework | Spring Boot | Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework | Spring Boot
| 2022.0 (Turing) | 5.0.x | 8.3.2 | 6.0.x | 3.0.x? | 2022.0 (Turing) | 5.0.x | 8.3.3 | 6.0.x | 3.0.x?
| 2021.2 (Raj) | 4.4.x | 7.17.3 | 5.3.x | 2.7.x | 2021.2 (Raj) | 4.4.x | 7.17.3 | 5.3.x | 2.7.x
| 2021.1 (Q) | 4.3.x | 7.15.2 | 5.3.x | 2.6.x | 2021.1 (Q) | 4.3.x | 7.15.2 | 5.3.x | 2.6.x
| 2021.0 (Pascal) | 4.2.xfootnote:oom[Out of maintenance] | 7.12.0 | 5.3.x | 2.5.x | 2021.0 (Pascal) | 4.2.xfootnote:oom[Out of maintenance] | 7.12.0 | 5.3.x | 2.5.x
@ -49,5 +49,5 @@ built and tested.
| Ingallsfootnote:oom[] | 2.1.xfootnote:oom[] | 2.4.0 | 4.3.25 | 1.5.x | Ingallsfootnote:oom[] | 2.1.xfootnote:oom[] | 2.4.0 | 4.3.25 | 1.5.x
|=== |===
Support for upcoming versions of Elasticsearch is being tracked and general compatibility should be given assuming Support for upcoming versions of Elasticsearch is being tracked and general compatibility should be given assuming
the usage of the <<elasticsearch.operations,ElasticsearchOperations interface>>. the usage of the <<elasticsearch.operations,ElasticsearchOperations interface>>.

View File

@ -1,7 +1,7 @@
[[elasticsearch-migration-guide-4.4-5.0]] [[elasticsearch-migration-guide-4.4-5.0]]
= Upgrading from 4.4.x to 5.0.x = Upgrading from 4.4.x to 5.0.x
This section describes breaking changes from version 4.4.x to 5.0.x and how removed features can be replaced by new This section describes breaking changes from version 4.4.x to 5.0.x and how removed features can be replaced by new
introduced features. introduced features.
[[elasticsearch-migration-guide-4.4-4.5.deprecations]] [[elasticsearch-migration-guide-4.4-4.5.deprecations]]
@ -9,8 +9,8 @@ introduced features.
=== `org.springframework.data.elasticsearch.client.erhlc` package === `org.springframework.data.elasticsearch.client.erhlc` package
See <<elasticsearch-migration-guide-4.4-5.0.breaking-changes-packages>>, all classes in this package have been See <<elasticsearch-migration-guide-4.4-5.0.breaking-changes-packages>>, all classes in this package have been
deprecated, as the default client implementations to use are the ones based on the new Java Client from deprecated, as the default client implementations to use are the ones based on the new Java Client from
Elasticsearch, see <<elasticsearch-migration-guide-4.4-5.0.new-clients>> Elasticsearch, see <<elasticsearch-migration-guide-4.4-5.0.new-clients>>
[[elasticsearch-migration-guide-4.4-5.0.breaking-changes]] [[elasticsearch-migration-guide-4.4-5.0.breaking-changes]]
@ -20,33 +20,33 @@ Elasticsearch, see <<elasticsearch-migration-guide-4.4-5.0.new-clients>>
==== suggest calls in operations interfaces have been removed ==== suggest calls in operations interfaces have been removed
Both `SearchOperations` and `ReactiveSearchOperations` had deprecated calls that were using Elasticsearch classes as Both `SearchOperations` and `ReactiveSearchOperations` had deprecated calls that were using Elasticsearch classes as
parameters. These now have been removed and so the dependency on Elasticsearch classes in these APIs has been cleaned. parameters. These now have been removed and so the dependency on Elasticsearch classes in these APIs has been cleaned.
[[elasticsearch-migration-guide-4.4-5.0.breaking-changes-packages]] [[elasticsearch-migration-guide-4.4-5.0.breaking-changes-packages]]
=== Package changes === Package changes
All the classes that are using or depend on the deprecated Elasticsearch `RestHighLevelClient` have been moved to the All the classes that are using or depend on the deprecated Elasticsearch `RestHighLevelClient` have been moved to the
package `org.springframework.data.elasticsearch.client.erhlc`. By this change we now have a clear separation of code package `org.springframework.data.elasticsearch.client.erhlc`. By this change we now have a clear separation of code
using the old deprecated Elasticsearch libraries, code using the new Elasticsearch client and code that is using the old deprecated Elasticsearch libraries, code using the new Elasticsearch client and code that is
independent of the client implementation. Also the reactive implementation that was provided up to now has been moved independent of the client implementation. Also the reactive implementation that was provided up to now has been moved
here, as this implementation contains code that was copied and adapted from Elasticsearch libraries. here, as this implementation contains code that was copied and adapted from Elasticsearch libraries.
If you are using `ElasticsearchRestTemplate` directly and not the `ElasticsearchOperations` interface you'll need to If you are using `ElasticsearchRestTemplate` directly and not the `ElasticsearchOperations` interface you'll need to
adjust your imports as well. adjust your imports as well.
When working with the `NativeSearchQuery` class, you'll need to switch to the `NativeQuery` class, which can take a When working with the `NativeSearchQuery` class, you'll need to switch to the `NativeQuery` class, which can take a
`Query` instance comign from the new Elasticsearch client libraries. You'll find plenty of examples in the test code. `Query` instance comign from the new Elasticsearch client libraries. You'll find plenty of examples in the test code.
[[elasticsearch-migration-guide-4.4-5.0.new-clients]] [[elasticsearch-migration-guide-4.4-5.0.new-clients]]
== New Elasticsearch client == New Elasticsearch client
Spring Data Elasticsearch now uses the new `ElasticsearchClient` and has Spring Data Elasticsearch now uses the new `ElasticsearchClient` and has
deprecated the use of the previous `RestHighLevelClient`. deprecated the use of the previous `RestHighLevelClient`.
=== Imperative style configuration === Imperative style configuration
To configure Spring Data Elasticsearch to use the new client, it is necessary to create a configuration bean that To configure Spring Data Elasticsearch to use the new client, it is necessary to create a configuration bean that
derives from `org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration`: derives from `org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration`:
==== ====
@ -101,7 +101,7 @@ With this configuration, the following beans will be available in the Spring app
[[elasticsearch-migration-guide-4.4-5.0.old-client]] [[elasticsearch-migration-guide-4.4-5.0.old-client]]
=== Still want to use the old client? === Still want to use the old client?
The old deprecated `RestHighLevelClient` can still be used, but you will need to add the dependency explicitly to The old deprecated `RestHighLevelClient` can still be used, but you will need to add the dependency explicitly to
your application as Spring Data Elasticsearch does not pull it in automatically anymore: your application as Spring Data Elasticsearch does not pull it in automatically anymore:
==== ====
@ -122,4 +122,4 @@ your application as Spring Data Elasticsearch does not pull it in automatically
---- ----
==== ====
Make sure to specify the version 7.17.5 explicitly, otherwise maven will resolve to 8.3.2, and this does not exist. Make sure to specify the version 7.17.5 explicitly, otherwise maven will resolve to 8.3.3, and this does not exist.

View File

@ -17,7 +17,13 @@ package org.springframework.data.elasticsearch.client.elc;
import co.elastic.clients.elasticsearch._types.aggregations.Aggregate; import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
import co.elastic.clients.elasticsearch.core.SearchResponse; import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.*; import co.elastic.clients.elasticsearch.core.search.CompletionSuggest;
import co.elastic.clients.elasticsearch.core.search.CompletionSuggestOption;
import co.elastic.clients.elasticsearch.core.search.Hit;
import co.elastic.clients.elasticsearch.core.search.HitsMetadata;
import co.elastic.clients.elasticsearch.core.search.ResponseBody;
import co.elastic.clients.elasticsearch.core.search.Suggestion;
import co.elastic.clients.elasticsearch.core.search.TotalHits;
import co.elastic.clients.json.JsonpMapper; import co.elastic.clients.json.JsonpMapper;
import java.util.ArrayList; import java.util.ArrayList;
@ -173,12 +179,13 @@ class SearchDocumentResponseBuilder {
List<TermSuggestion.Entry> entries = new ArrayList<>(); List<TermSuggestion.Entry> entries = new ArrayList<>();
suggestionsES.forEach(suggestionES -> { suggestionsES.forEach(suggestionES -> {
TermSuggest termSuggest = suggestionES.term(); var termSuggest = suggestionES.term();
var termSuggestOptions = termSuggest.options();
TermSuggestOption optionES = termSuggest.options();
List<TermSuggestion.Entry.Option> options = new ArrayList<>(); List<TermSuggestion.Entry.Option> options = new ArrayList<>();
options.add(new TermSuggestion.Entry.Option(optionES.text(), null, optionES.score(), null, termSuggestOptions.forEach(optionES -> {
Math.toIntExact(optionES.freq()))); options.add(new TermSuggestion.Entry.Option(optionES.text(), null, optionES.score(), null,
Math.toIntExact(optionES.freq())));
});
entries.add(new TermSuggestion.Entry(termSuggest.text(), termSuggest.offset(), termSuggest.length(), options)); entries.add(new TermSuggestion.Entry(termSuggest.text(), termSuggest.offset(), termSuggest.length(), options));
}); });
return new TermSuggestion(name, suggestionsES.size(), entries, null); return new TermSuggestion(name, suggestionsES.size(), entries, null);
@ -188,10 +195,12 @@ class SearchDocumentResponseBuilder {
List<PhraseSuggestion.Entry> entries = new ArrayList<>(); List<PhraseSuggestion.Entry> entries = new ArrayList<>();
suggestionsES.forEach(suggestionES -> { suggestionsES.forEach(suggestionES -> {
PhraseSuggest phraseSuggest = suggestionES.phrase(); var phraseSuggest = suggestionES.phrase();
PhraseSuggestOption optionES = phraseSuggest.options(); var phraseSuggestOptions = phraseSuggest.options();
List<PhraseSuggestion.Entry.Option> options = new ArrayList<>(); List<PhraseSuggestion.Entry.Option> options = new ArrayList<>();
options.add(new PhraseSuggestion.Entry.Option(optionES.text(), optionES.highlighted(), null, null)); phraseSuggestOptions.forEach(optionES -> {
options.add(new PhraseSuggestion.Entry.Option(optionES.text(), optionES.highlighted(), null, null));
});
entries.add(new PhraseSuggestion.Entry(phraseSuggest.text(), phraseSuggest.offset(), phraseSuggest.length(), entries.add(new PhraseSuggestion.Entry(phraseSuggest.text(), phraseSuggest.offset(), phraseSuggest.length(),
options, null)); options, null));
}); });

View File

@ -15,7 +15,7 @@
# #
# #
sde.testcontainers.image-name=docker.elastic.co/elasticsearch/elasticsearch sde.testcontainers.image-name=docker.elastic.co/elasticsearch/elasticsearch
sde.testcontainers.image-version=8.3.2 sde.testcontainers.image-version=8.3.3
# #
# #
# needed as we do a DELETE /* at the end of the tests, will be required from 8.0 on, produces a warning since 7.13 # needed as we do a DELETE /* at the end of the tests, will be required from 8.0 on, produces a warning since 7.13