diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc index 7f6d8cbfc..7ebaf0a2b 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc @@ -6,6 +6,7 @@ * Upgrade to Elasticsearch 9.4.3 * Allow to provide non-standard (custom) index options for `@Field` / `@InnerField` +* Support Elasticsearch Serverless [[new-features.6-1-0]] == New in Spring Data Elasticsearch 6.1 diff --git a/src/main/java/org/springframework/data/elasticsearch/annotations/Setting.java b/src/main/java/org/springframework/data/elasticsearch/annotations/Setting.java index 67d20bb6a..4ba215c2a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/annotations/Setting.java +++ b/src/main/java/org/springframework/data/elasticsearch/annotations/Setting.java @@ -27,9 +27,9 @@ import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchPe /** * Elasticsearch Setting * - * @author Steven Pearce * @author Mohsin Husen * @author Peter-Josef Meisch + * @author Steven Pearce */ @Persistent @@ -61,8 +61,8 @@ public @interface Setting { short replicas() default 1; /** - * Refresh interval for the index. Used for index creation. If no value, defaults are server type dependant and - * set in {@link SimpleElasticsearchPersistentEntity} + * Refresh interval for the index. Used for index creation. If no value, defaults are server type dependant and set in + * {@link SimpleElasticsearchPersistentEntity} */ String refreshInterval() default ""; diff --git a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java index 58d673831..7f9130f42 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java @@ -40,9 +40,9 @@ import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; /** - * @author Steven Pearce * @author Christoph Strobl * @author Peter-Josef Meisch + * @author Steven Pearce * @since 3.2 */ @Configuration(proxyBeanMethods = false) @@ -189,11 +189,13 @@ public class ElasticsearchConfigurationSupport { } /** - * Configures the {@link ElasticsearchServerType} to use when creating indexes. The Default value will - * support the standard configurations, and SERVERLESS will support ElasticSearch Serverless + * Configures the {@link ElasticsearchServerType} to use when creating indexes. The Default value will support the + * standard configurations, and SERVERLESS will support ElasticSearch Serverless * * @return the {@link ElasticsearchServerType} to use * @since 6.2 */ - protected ElasticsearchServerType serverType() { return ElasticsearchServerType.DEFAULT; } + protected ElasticsearchServerType serverType() { + return ElasticsearchServerType.DEFAULT; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchServerType.java b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchServerType.java index a52b4766c..22f362f40 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchServerType.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchServerType.java @@ -23,6 +23,7 @@ package org.springframework.data.elasticsearch.config; * @see #SERVERLESS * * @author Steven Pearce + * @since 6.2 */ public enum ElasticsearchServerType { /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java index 9a8933494..9456ef26c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java @@ -40,6 +40,7 @@ import org.springframework.data.mapping.model.FieldNamingStrategy; * @author Peter-Josef Meisch * @author Roman Puchkovskiy * @author Subhobrata Dey + * @author Steven Pearce */ public interface ElasticsearchPersistentEntity extends PersistentEntity { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java index 99c7305d7..de51e52f1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java @@ -28,11 +28,11 @@ import org.springframework.data.mapping.model.SimpleTypeHolder; /** * SimpleElasticsearchMappingContext * - * @author Steven Pearce * @author Rizwan Idrees * @author Mohsin Husen * @author Mark Paluch * @author Peter-Josef Meisch + * @author Steven Pearce */ public class SimpleElasticsearchMappingContext extends AbstractMappingContext, ElasticsearchPersistentProperty> { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java index 3a97e4cf7..6c30a1048 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java @@ -58,8 +58,6 @@ import org.springframework.util.StringUtils; * Elasticsearch specific {@link org.springframework.data.mapping.PersistentEntity} implementation holding * * @param - * - * @author Steven Pearce * @author Rizwan Idrees * @author Mohsin Husen * @author Mark Paluch @@ -68,6 +66,7 @@ import org.springframework.util.StringUtils; * @author Peter-Josef Meisch * @author Roman Puchkovskiy * @author Subhobrata Dey + * @author Steven Pearce */ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntity implements ElasticsearchPersistentEntity { @@ -480,11 +479,10 @@ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntit settingsParameter.serverType = contextConfiguration.serverType; settingsParameter.shards = 1; settingsParameter.replicas = 1; - settingsParameter.refreshInterval = - switch (contextConfiguration.serverType) { - case DEFAULT -> "1s"; - case SERVERLESS -> "5s"; - }; + settingsParameter.refreshInterval = switch (contextConfiguration.serverType) { + case DEFAULT -> "1s"; + case SERVERLESS -> "5s"; + }; if (settingAnnotation != null) { processSettingAnnotation(settingAnnotation, settingsParameter); @@ -646,7 +644,8 @@ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntit this(fieldNamingStrategy, writeTypeHints, ElasticsearchServerType.DEFAULT); } - ContextConfiguration(FieldNamingStrategy fieldNamingStrategy, boolean writeTypeHints, ElasticsearchServerType serverType) { + ContextConfiguration(FieldNamingStrategy fieldNamingStrategy, boolean writeTypeHints, + ElasticsearchServerType serverType) { this.fieldNamingStrategy = fieldNamingStrategy; this.writeTypeHints = writeTypeHints; this.serverType = serverType; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java index 6a38ccb1c..08b222232 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java @@ -52,13 +52,13 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.util.ReflectionUtils; /** - * @author Steven Pearce * @author Rizwan Idrees * @author Mohsin Husen * @author Mark Paluch * @author Oliver Gierke * @author Peter-Josef Meisch * @author Roman Puchkovskiy + * @author Steven Pearce */ public class SimpleElasticsearchPersistentEntityTests extends MappingContextBaseTests { @@ -244,8 +244,8 @@ public class SimpleElasticsearchPersistentEntityTests extends MappingContextBase Settings settings = entity.getDefaultSettings().flatten(); assertThat(settings).containsEntry("index.number_of_shards", "1"); - assertThat(settings).containsEntry("index.number_of_replicas","1"); - assertThat(settings).containsEntry("index.refresh_interval","1s"); + assertThat(settings).containsEntry("index.number_of_replicas", "1"); + assertThat(settings).containsEntry("index.refresh_interval", "1s"); } @@ -258,8 +258,8 @@ public class SimpleElasticsearchPersistentEntityTests extends MappingContextBase Settings settings = entity.getDefaultSettings().flatten(); assertThat(settings).containsEntry("index.number_of_shards", "4"); - assertThat(settings).containsEntry("index.number_of_replicas","5"); - assertThat(settings).containsEntry("index.refresh_interval","1s"); + assertThat(settings).containsEntry("index.number_of_replicas", "5"); + assertThat(settings).containsEntry("index.refresh_interval", "1s"); } @@ -317,7 +317,7 @@ public class SimpleElasticsearchPersistentEntityTests extends MappingContextBase Settings settings = entity.getDefaultSettings().flatten(); assertThat(settings).doesNotContainKey("index.number_of_shards"); assertThat(settings).doesNotContainKey("index.number_of_replicas"); - assertThat(settings).containsEntry("index.refresh_interval","5s"); + assertThat(settings).containsEntry("index.refresh_interval", "5s"); } @@ -332,7 +332,7 @@ public class SimpleElasticsearchPersistentEntityTests extends MappingContextBase assertThat(settings).doesNotContainKey("index.number_of_shards"); assertThat(settings).doesNotContainKey("index.number_of_replicas"); - assertThat(settings).containsEntry("index.refresh_interval","5s"); + assertThat(settings).containsEntry("index.refresh_interval", "5s"); } } @@ -437,6 +437,7 @@ public class SimpleElasticsearchPersistentEntityTests extends MappingContextBase assertThat(persistentEntity.getServerType()).isEqualTo(ElasticsearchServerType.SERVERLESS); assertThat(persistentEntity.getRefreshInterval()).isEqualTo("9s"); } + @Test @DisplayName("should return OverriddenRefreshInterval from SERVERLESS context configuration") void shouldReturnOverriddenRefreshIntervalFromSERVERLESSContextConfiguration() {