diff --git a/src/main/asciidoc/reference/elasticsearch-migration-guide-4.3-4.4.adoc b/src/main/asciidoc/reference/elasticsearch-migration-guide-4.3-4.4.adoc index 72138e2ce..fcd294571 100644 --- a/src/main/asciidoc/reference/elasticsearch-migration-guide-4.3-4.4.adoc +++ b/src/main/asciidoc/reference/elasticsearch-migration-guide-4.3-4.4.adoc @@ -28,6 +28,14 @@ Connections to Elasticsearch must be made using either the imperative `Elasticse In 4.3 two classes (`ElasticsearchAggregations` and `ElasticsearchAggregation`) had been moved to the `org.springframework.data.elasticsearch.core.clients.elasticsearch7` package in preparation for the integration of the new Elasticsearch client. The were moved back to the `org.springframework.data.elasticsearch.core` package as we keep the classes use the old Elasticsearch client where they were. +=== Behaviour change + +The `ReactiveElasticsearchTemplate`, when created directly or by Spring Boot configuration had a default refresh policy of IMMEDIATE. +This could cause performance issues on heavy indexing and was different than the default behaviour of Elasticsearch. +This has been changed to that now the default refresh policy is NONE. +When the +`ReactiveElasticsearchTemplate` was provided by using the configuration like described in <> the default refresh policy already was set to NONE. + [[elasticsearch-migration-guide-4.3-4.4.new-clients]] == New Elasticsearch client diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java index 1d21f5b79..b7652a467 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java @@ -73,7 +73,7 @@ abstract public class AbstractReactiveElasticsearchTemplate protected final SimpleElasticsearchMappingContext mappingContext; protected final EntityOperations entityOperations; - protected @Nullable RefreshPolicy refreshPolicy = RefreshPolicy.IMMEDIATE; + protected @Nullable RefreshPolicy refreshPolicy = RefreshPolicy.NONE; protected RoutingResolver routingResolver; protected @Nullable ReactiveEntityCallbacks entityCallbacks; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java index c6f576364..313e0075b 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java @@ -85,7 +85,7 @@ public void insertShouldUseDefaultRefreshPolicy() { .as(StepVerifier::create) // .verifyComplete(); - assertThat(captor.getValue().getRefreshPolicy()).isEqualTo(WriteRequest.RefreshPolicy.IMMEDIATE); + assertThat(captor.getValue().getRefreshPolicy()).isEqualTo(WriteRequest.RefreshPolicy.NONE); } @Test // DATAES-504 @@ -170,7 +170,7 @@ public void deleteShouldUseDefaultRefreshPolicy() { .as(StepVerifier::create) // .verifyComplete(); - assertThat(captor.getValue().getRefreshPolicy()).isEqualTo(WriteRequest.RefreshPolicy.IMMEDIATE); + assertThat(captor.getValue().getRefreshPolicy()).isEqualTo(WriteRequest.RefreshPolicy.NONE); } @Test // DATAES-504 @@ -198,7 +198,7 @@ public void deleteByShouldUseDefaultRefreshPolicy() { .as(StepVerifier::create) // .verifyComplete(); - assertThat(captor.getValue().isRefresh()).isTrue(); + assertThat(captor.getValue().isRefresh()).isFalse(); } @Test // DATAES-504 @@ -207,13 +207,13 @@ public void deleteByShouldApplyRefreshPolicy() { ArgumentCaptor captor = ArgumentCaptor.forClass(DeleteByQueryRequest.class); when(client.deleteBy(captor.capture())).thenReturn(Mono.empty()); - template.setRefreshPolicy(RefreshPolicy.NONE); + template.setRefreshPolicy(RefreshPolicy.IMMEDIATE); template.delete(new StringQuery(QueryBuilders.matchAllQuery().toString()), Object.class, index) // .as(StepVerifier::create) // .verifyComplete(); - assertThat(captor.getValue().isRefresh()).isFalse(); + assertThat(captor.getValue().isRefresh()).isTrue(); } @Test // DATAES-504