DATAES-869 - Update to Elasticsearch 7.8.

Original PR: #487
This commit is contained in:
Peter-Josef Meisch 2020-06-26 23:13:19 +02:00 committed by GitHub
parent 44a669d66c
commit 7d8bc81fdd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 71 additions and 62 deletions

View File

@ -19,7 +19,7 @@
<properties>
<commonslang>2.6</commonslang>
<elasticsearch>7.7.1</elasticsearch>
<elasticsearch>7.8.0</elasticsearch>
<log4j>2.9.1</log4j>
<springdata.commons>2.4.0-SNAPSHOT</springdata.commons>
<netty>4.1.50.Final</netty>

View File

@ -35,7 +35,7 @@ The following table shows the Elasticsearch versions that are used by Spring Dat
[cols="^,^,^,^",options="header"]
|===
| Spring Data Release Train |Spring Data Elasticsearch |Elasticsearch | Spring Boot
| 2020.0.0footnote:cdv[Currently in development] |4.1.xfootnote:cdv[]|7.7.1 |2.3.xfootnote:cdv[]
| 2020.0.0footnote:cdv[Currently in development] |4.1.xfootnote:cdv[]|7.8.0 |2.3.xfootnote:cdv[]
| Neumann | 4.0.x | 7.6.2 |2.3.x
| Moore | 3.2.x |6.8.10 | 2.2.x
| Lovelace | 3.1.x | 6.2.2 |2.1.x

View File

@ -1,6 +1,13 @@
[[new-features]]
= What's new
[[new-features.4-1-0]]
== New in Spring Data Elasticsearch 4.1
* Upgrade to Elasticsearch 7.8.0
* Improved API for alias management
* Introduction of `ReactiveIndexOperations` for index management
[[new-features.4-0-0]]
== New in Spring Data Elasticsearch 4.0
@ -11,8 +18,7 @@
* Removal of the Jackson `ObjectMapper`, now using the <<elasticsearch.mapping.meta-model,MappingElasticsearchConverter>>
* Cleanup of the API in the `*Operations` interfaces, grouping and renaming methods so that they match the Elasticsearch API, deprecating the old methods, aligning with other Spring Data modules.
* Introduction of `SearchHit<T>` class to represent a found document together with the relevant result metadata for this document (i.e. _sortValues_).
* Introduction of the `SearchHits<T>` class to represent a whole search result together with the
metadata for the complete search result (i.e. _max_score_).
* Introduction of the `SearchHits<T>` class to represent a whole search result together with the metadata for the complete search result (i.e. _max_score_).
* Introduction of `SearchPage<T>` class to represent a paged result containing a `SearchHits<T>` instance.
* Introduction of the `GeoDistanceOrder` class to be able to create sorting by geographical distance
* Implementation of Auditing Support

View File

@ -22,7 +22,7 @@ import java.util.Map;
import java.util.Set;
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.elasticsearch.common.settings.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -170,11 +170,11 @@ abstract class AbstractDefaultIndexOperations implements IndexOperations {
protected abstract boolean doAddAlias(AliasQuery query, IndexCoordinates index);
@Override
public List<AliasMetaData> queryForAlias() {
public List<AliasMetadata> queryForAlias() {
return doQueryForAlias(getIndexCoordinates());
}
protected abstract List<AliasMetaData> doQueryForAlias(IndexCoordinates index);
protected abstract List<AliasMetadata> doQueryForAlias(IndexCoordinates index);
@Override
public boolean removeAlias(AliasQuery query) {

View File

@ -34,7 +34,7 @@ import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetMappingsRequest;
import org.elasticsearch.client.indices.GetMappingsResponse;
import org.elasticsearch.client.indices.PutMappingRequest;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.springframework.data.elasticsearch.core.document.Document;
import org.springframework.data.elasticsearch.core.index.AliasActions;
import org.springframework.data.elasticsearch.core.index.AliasData;
@ -136,7 +136,7 @@ class DefaultIndexOperations extends AbstractDefaultIndexOperations implements I
}
@Override
protected List<AliasMetaData> doQueryForAlias(IndexCoordinates index) {
protected List<AliasMetadata> doQueryForAlias(IndexCoordinates index) {
GetAliasesRequest getAliasesRequest = requestFactory.getAliasesRequest(index);

View File

@ -33,7 +33,7 @@ import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.elasticsearch.common.collect.ImmutableOpenMap;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.document.Document;
@ -133,7 +133,7 @@ class DefaultTransportIndexOperations extends AbstractDefaultIndexOperations imp
}
@Override
protected List<AliasMetaData> doQueryForAlias(IndexCoordinates index) {
protected List<AliasMetadata> doQueryForAlias(IndexCoordinates index) {
GetAliasesRequest getAliasesRequest = requestFactory.getAliasesRequest(index);
return client.admin().indices().getAliases(getAliasesRequest).actionGet().getAliases().get(index.getIndexName());
@ -144,10 +144,10 @@ class DefaultTransportIndexOperations extends AbstractDefaultIndexOperations imp
GetAliasesRequest getAliasesRequest = requestFactory.getAliasesRequest(aliasNames, indexNames);
ImmutableOpenMap<String, List<AliasMetaData>> aliases = client.admin().indices().getAliases(getAliasesRequest)
ImmutableOpenMap<String, List<AliasMetadata>> aliases = client.admin().indices().getAliases(getAliasesRequest)
.actionGet().getAliases();
Map<String, Set<AliasMetaData>> aliasesResponse = new LinkedHashMap<>();
Map<String, Set<AliasMetadata>> aliasesResponse = new LinkedHashMap<>();
aliases.keysIt().forEachRemaining(index -> aliasesResponse.put(index, new HashSet<>(aliases.get(index))));
return requestFactory.convertAliasesResponse(aliasesResponse);
}

View File

@ -19,7 +19,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.document.Document;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
@ -291,7 +291,7 @@ public interface ElasticsearchOperations extends DocumentOperations, SearchOpera
* @deprecated since 4.0, use {@link #indexOps(IndexCoordinates)} and {@link IndexOperations#queryForAlias()}
*/
@Deprecated
default List<AliasMetaData> queryForAlias(String indexName) {
default List<AliasMetadata> queryForAlias(String indexName) {
return indexOps(IndexCoordinates.of(indexName)).queryForAlias();
}

View File

@ -19,7 +19,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.springframework.data.elasticsearch.core.document.Document;
import org.springframework.data.elasticsearch.core.index.AliasActions;
import org.springframework.data.elasticsearch.core.index.AliasData;
@ -39,7 +39,7 @@ import org.springframework.data.elasticsearch.core.query.AliasQuery;
*/
public interface IndexOperations {
//region index management
// region index management
/**
* Create an index.
*
@ -73,9 +73,9 @@ public interface IndexOperations {
* Refresh the index(es) this IndexOperations is bound to
*/
void refresh();
//endregion
// endregion
//region mappings
// region mappings
/**
* Creates the index mapping for the entity this IndexOperations is bound to.
*
@ -119,15 +119,16 @@ public interface IndexOperations {
default boolean putMapping(Class<?> clazz) {
return putMapping(createMapping(clazz));
}
//endregion
// endregion
//region settings
// region settings
/**
* Get mapping for an index defined by a class.
*
* @return the mapping
*/
Map<String, Object> getMapping();
/**
* Get the index settings.
*
@ -142,9 +143,9 @@ public interface IndexOperations {
* @return the settings
*/
Map<String, Object> getSettings(boolean includeDefaults);
//endregion
// endregion
//region aliases
// region aliases
/**
* Add an alias.
*
@ -162,7 +163,7 @@ public interface IndexOperations {
* @deprecated since 4.1, use {@link #getAliases(String...)} or {@link #getAliasesForIndex(String...)}.
*/
@Deprecated
List<AliasMetaData> queryForAlias();
List<AliasMetadata> queryForAlias();
/**
* Remove an alias.
@ -185,6 +186,7 @@ public interface IndexOperations {
/**
* gets information about aliases
*
* @param aliasNames alias names, must not be {@literal null}
* @return a {@link Map} from index names to {@link AliasData} for that index
* @since 4.1
@ -193,14 +195,15 @@ public interface IndexOperations {
/**
* gets information about aliases
*
* @param indexNames index names, must not be {@literal null}
* @return a {@link Map} from index names to {@link AliasData} for that index
* @since 4.1
*/
Map<String, Set<AliasData>> getAliasesForIndex(String... indexNames);
//endregion
// endregion
//region helper functions
// region helper functions
/**
* get the current {@link IndexCoordinates}. These may change over time when the entity class has a SpEL constructed
* index name. When this IndexOperations is not bound to a class, the bound IndexCoordinates are returned.
@ -209,5 +212,5 @@ public interface IndexOperations {
* @since 4.1
*/
IndexCoordinates getIndexCoordinates();
//endregion
// endregion
}

View File

@ -59,7 +59,7 @@ import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetMappingsRequest;
import org.elasticsearch.client.indices.PutMappingRequest;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.elasticsearch.common.collect.ImmutableOpenMap;
import org.elasticsearch.common.compress.CompressedXContent;
import org.elasticsearch.common.geo.GeoDistance;
@ -482,21 +482,21 @@ class RequestFactory {
}
public Map<String, Set<AliasData>> convertAliasesResponse(
ImmutableOpenMap<String, List<AliasMetaData>> aliasesResponse) {
ImmutableOpenMap<String, List<AliasMetadata>> aliasesResponse) {
Map<String, Set<AliasMetaData>> mapped = new LinkedHashMap<>();
Map<String, Set<AliasMetadata>> mapped = new LinkedHashMap<>();
Iterator<String> keysIt = aliasesResponse.keysIt();
while (keysIt.hasNext()) {
String key = keysIt.next();
List<AliasMetaData> aliasMetaData = aliasesResponse.get(key);
List<AliasMetadata> aliasMetaData = aliasesResponse.get(key);
mapped.put(key, new LinkedHashSet<>(aliasMetaData));
}
return convertAliasesResponse(mapped);
}
public Map<String, Set<AliasData>> convertAliasesResponse(Map<String, Set<AliasMetaData>> aliasesResponse) {
public Map<String, Set<AliasData>> convertAliasesResponse(Map<String, Set<AliasMetadata>> aliasesResponse) {
Map<String, Set<AliasData>> converted = new LinkedHashMap<>();
aliasesResponse.forEach((index, aliasMetaDataSet) -> {
Set<AliasData> aliasDataSet = new LinkedHashSet<>();

View File

@ -140,7 +140,7 @@ public class DocumentAdaptersUnitTests {
new DocumentField("field", Collections.singletonList("value")));
SearchShardTarget shard = new SearchShardTarget("node", new ShardId("index", "uuid", 42), null, null);
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields);
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields, null);
searchHit.shard(shard);
searchHit.setSeqNo(1);
searchHit.setPrimaryTerm(2);
@ -168,7 +168,7 @@ public class DocumentAdaptersUnitTests {
fields.put("string", new DocumentField("string", Collections.singletonList("value")));
fields.put("bool", new DocumentField("bool", Arrays.asList(true, true, false)));
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields);
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields, null);
SearchDocument document = DocumentAdapters.from(searchHit);
@ -185,7 +185,7 @@ public class DocumentAdaptersUnitTests {
fields.put("bool", new DocumentField("bool", Arrays.asList(true, true, false)));
fields.put("null", new DocumentField("null", Collections.emptyList()));
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields);
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields, null);
SearchDocument document = DocumentAdapters.from(searchHit);
@ -202,7 +202,7 @@ public class DocumentAdaptersUnitTests {
fields.put("string", new DocumentField("string", Collections.singletonList("value")));
fields.put("bool", new DocumentField("bool", Arrays.asList(true, true, false)));
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields);
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), fields, null);
SearchDocument document = DocumentAdapters.from(searchHit);
@ -215,7 +215,7 @@ public class DocumentAdaptersUnitTests {
BytesArray source = new BytesArray("{\"field\":\"value\"}");
SearchShardTarget shard = new SearchShardTarget("node", new ShardId("index", "uuid", 42), null, null);
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), Collections.emptyMap());
SearchHit searchHit = new SearchHit(123, "my-id", new Text("type"), Collections.emptyMap(), null);
searchHit.shard(shard);
searchHit.sourceRef(source).score(42);
searchHit.version(22);

View File

@ -47,7 +47,7 @@ import org.assertj.core.util.Lists;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.elasticsearch.index.VersionType;
import org.elasticsearch.script.Script;
import org.elasticsearch.script.ScriptType;
@ -2739,7 +2739,7 @@ public abstract class ElasticsearchTemplateTests {
indexOperations.addAlias(aliasQuery);
// then
List<AliasMetaData> aliases = indexOperations.queryForAlias();
List<AliasMetadata> aliases = indexOperations.queryForAlias();
assertThat(aliases).isNotNull();
assertThat(aliases.get(0).alias()).isEqualTo(aliasName);
}
@ -2753,9 +2753,9 @@ public abstract class ElasticsearchTemplateTests {
indexOperations.alias(aliasActions);
List<AliasMetaData> aliases = indexOperations.queryForAlias();
List<AliasMetadata> aliases = indexOperations.queryForAlias();
assertThat(aliases).hasSize(2);
assertThat(aliases.stream().map(AliasMetaData::alias).collect(Collectors.toList())).contains("aliasA", "aliasB");
assertThat(aliases.stream().map(AliasMetadata::alias).collect(Collectors.toList())).contains("aliasA", "aliasB");
}
@Test // DATAES-864
@ -2773,7 +2773,7 @@ public abstract class ElasticsearchTemplateTests {
indexOperations.alias(aliasActions);
List<AliasMetaData> aliases = indexOperations.queryForAlias();
List<AliasMetadata> aliases = indexOperations.queryForAlias();
assertThat(aliases).hasSize(0);
}
@ -2829,10 +2829,10 @@ public abstract class ElasticsearchTemplateTests {
operations.index(indexQuery, IndexCoordinates.of(alias1));
// then
List<AliasMetaData> aliasMetaData = indexOperations.queryForAlias();
List<AliasMetadata> aliasMetaData = indexOperations.queryForAlias();
assertThat(aliasMetaData).isNotEmpty();
AliasMetaData aliasMetaData1 = aliasMetaData.get(0);
AliasMetadata aliasMetaData1 = aliasMetaData.get(0);
assertThat(aliasMetaData1).isNotNull();
if (aliasMetaData1.alias().equals(alias1)) {
assertThat(aliasMetaData1.indexRouting()).isEqualTo("0");
@ -2842,7 +2842,7 @@ public abstract class ElasticsearchTemplateTests {
fail("unknown alias");
}
AliasMetaData aliasMetaData2 = aliasMetaData.get(1);
AliasMetadata aliasMetaData2 = aliasMetaData.get(1);
assertThat(aliasMetaData2).isNotNull();
if (aliasMetaData2.alias().equals(alias1)) {
assertThat(aliasMetaData2.indexRouting()).isEqualTo("0");
@ -2894,9 +2894,9 @@ public abstract class ElasticsearchTemplateTests {
long count = operations.count(query, IndexCoordinates.of(alias));
// then
List<AliasMetaData> aliases = indexOperations.queryForAlias();
List<AliasMetadata> aliases = indexOperations.queryForAlias();
assertThat(aliases).isNotNull();
AliasMetaData aliasMetaData = aliases.get(0);
AliasMetadata aliasMetaData = aliases.get(0);
assertThat(aliasMetaData.alias()).isEqualTo(alias);
assertThat(aliasMetaData.searchRouting()).isEqualTo("0");
assertThat(aliasMetaData.indexRouting()).isEqualTo("0");
@ -2919,7 +2919,7 @@ public abstract class ElasticsearchTemplateTests {
// when
indexOperations.addAlias(aliasQuery);
List<AliasMetaData> aliases = indexOperations.queryForAlias();
List<AliasMetadata> aliases = indexOperations.queryForAlias();
assertThat(aliases).isNotNull();
assertThat(aliases.get(0).alias()).isEqualTo(aliasName);

View File

@ -20,7 +20,7 @@
description=Adds "built in" analyzers to Elasticsearch.
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=analysis-common
@ -35,7 +35,7 @@ classname=org.elasticsearch.analysis.common.CommonAnalysisPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI

View File

@ -20,7 +20,7 @@
description=Module for ingest processors that do not require additional security permissions or have large dependencies and resources
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=ingest-common
@ -35,7 +35,7 @@ classname=org.elasticsearch.ingest.common.IngestCommonPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI

View File

@ -20,7 +20,7 @@
description=Lucene expressions integration for Elasticsearch
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=lang-expression
@ -35,7 +35,7 @@ classname=org.elasticsearch.script.expression.ExpressionPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI

View File

@ -20,7 +20,7 @@
description=An easy, safe and fast scripting language for Elasticsearch
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=lang-painless
@ -35,7 +35,7 @@ classname=org.elasticsearch.painless.PainlessPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI

View File

@ -20,7 +20,7 @@
description=Adds advanced field mappers
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=mapper-extras
@ -35,7 +35,7 @@ classname=org.elasticsearch.index.mapper.MapperExtrasPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI

View File

@ -20,7 +20,7 @@
description=The Reindex module adds APIs to reindex from one index to another or update documents in place.
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=reindex
@ -35,7 +35,7 @@ classname=org.elasticsearch.index.reindex.ReindexPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI

View File

@ -20,7 +20,7 @@
description=Module for URL repository
#
# 'version': plugin's version
version=7.7.1
version=7.8.0
#
# 'name': the plugin name
name=repository-url
@ -35,7 +35,7 @@ classname=org.elasticsearch.plugin.repository.url.URLRepositoryPlugin
java.version=1.8
#
# 'elasticsearch.version': version of elasticsearch compiled against
elasticsearch.version=7.7.1
elasticsearch.version=7.8.0
### optional elements for plugins:
#
# 'extended.plugins': other plugins this plugin extends through SPI