DATAES-693 - Support for source fetching in update operations.

Original PR: #346
This commit is contained in:
MassimilianoPoggi 2019-11-18 20:31:35 +01:00 committed by Peter-Josef Meisch
parent eba23eeb17
commit 79d75f814c
2 changed files with 30 additions and 1 deletions

View File

@ -145,6 +145,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
* @author Peter-Josef Meisch
* @author Mathias Teier
* @author Gyula Attila Csorogi
* @author Massimiliano Poggi
*/
public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate
implements EsClient<RestHighLevelClient>, ApplicationContextAware {
@ -685,7 +686,8 @@ public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate
.setRefreshPolicy(queryUpdateRequest.getRefreshPolicy()) //
.waitForActiveShards(queryUpdateRequest.waitForActiveShards()) //
.scriptedUpsert(queryUpdateRequest.scriptedUpsert()) //
.docAsUpsert(queryUpdateRequest.docAsUpsert());
.docAsUpsert(queryUpdateRequest.docAsUpsert()) //
.fetchSource(queryUpdateRequest.fetchSource());
if (query.DoUpsert()) {
updateRequest.docAsUpsert(true);

View File

@ -31,6 +31,7 @@ import org.elasticsearch.ElasticsearchStatusException;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.junit.jupiter.api.Test;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@ -55,6 +56,7 @@ import org.springframework.test.util.ReflectionTestUtils;
* @author Sascha Woo
* @author Don Wellington
* @author Peter-Josef Meisch
* @author Massimiliano Poggi
*/
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchRestTemplateConfiguration.class })
@ -100,6 +102,31 @@ public class ElasticsearchRestTemplateTests extends ElasticsearchTemplateTests {
assertThat(request.upsertRequest()).isNotNull();
}
@Test // DATAES-693
public void shouldReturnSourceWhenRequested() throws IOException {
// given
Map<String, Object> doc = new HashMap<>();
doc.put("id", "1");
doc.put("message", "test");
UpdateRequest updateRequest = new UpdateRequest()
.doc(doc)
.fetchSource(FetchSourceContext.FETCH_SOURCE);
UpdateQuery updateQuery = new UpdateQueryBuilder() //
.withClass(SampleEntity.class) //
.withId("1") //
.withUpdateRequest(updateRequest).build();
// when
UpdateRequest request = (UpdateRequest) ReflectionTestUtils //
.invokeMethod(elasticsearchTemplate, "prepareUpdate", updateQuery);
// then
assertThat(request).isNotNull();
assertThat(request.fetchSource()).isEqualTo(FetchSourceContext.FETCH_SOURCE);
}
@Data
@Builder
@Document(indexName = "test-index-sample-core-rest-template", type = "test-type", shards = 1, replicas = 0,