diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java index 6c3836701..77566e9d2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java @@ -1048,6 +1048,9 @@ public DeleteByQueryRequest documentDeleteByQueryRequest(DeleteQuery query, @Nul .collect(Collectors.toList())); } } + if (query.getRefresh() != null) { + dqb.refresh(query.getRefresh()); + } dqb.allowNoIndices(query.getAllowNoIndices()) .conflicts(conflicts(query.getConflicts())) .ignoreUnavailable(query.getIgnoreUnavailable()) diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java index 5036f92c9..4f12438cd 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java @@ -30,12 +30,16 @@ import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; +import org.springframework.data.elasticsearch.core.query.Criteria; +import org.springframework.data.elasticsearch.core.query.CriteriaQuery; +import org.springframework.data.elasticsearch.core.query.DeleteQuery; import org.springframework.data.elasticsearch.core.query.DocValueField; import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch + * @author Han Seungwoo */ class RequestConverterTest { @@ -72,6 +76,19 @@ void shouldAddDocvalueFields() { assertThat(fieldAndFormats.get(1).format()).isEqualTo("format2"); } + @Test // #2973 + @DisplayName("should set refresh based on deleteRequest") + void refreshSetByDeleteRequest() { + var query = new CriteriaQuery(new Criteria("text").contains("test")); + var deleteQuery = DeleteQuery.builder(query).withRefresh(true).build(); + + var deleteByQueryRequest = requestConverter.documentDeleteByQueryRequest(deleteQuery, null, SampleEntity.class, + IndexCoordinates.of("foo"), + null); + + assertThat(deleteByQueryRequest.refresh()).isTrue(); + } + @Document(indexName = "does-not-matter") static class SampleEntity { @Nullable