From 4d7d0955f91d6114a89d2bea804bb80685d81501 Mon Sep 17 00:00:00 2001 From: Scooby Date: Wed, 28 Dec 2022 02:53:51 +0800 Subject: [PATCH] IndexQuery's id get ignored in bulkIndexOperation. Original Pull Request #2407 Closdes #2405 --- .../client/elc/RequestConverter.java | 7 ++++--- .../core/ElasticsearchIntegrationTests.java | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) 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 dc33b4c79..95f294c18 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 @@ -96,6 +96,7 @@ import org.springframework.util.StringUtils; * @author Peter-Josef Meisch * @author Sascha Woo * @author cdalxndr + * @author scoobyzhang * @since 4.4 */ class RequestConverter { @@ -440,7 +441,7 @@ class RequestConverter { Object queryObject = query.getObject(); if (queryObject != null) { - String id = !StringUtils.hasText(query.getId()) ? getPersistentEntityId(queryObject) : query.getId(); + String id = StringUtils.hasText(query.getId()) ? query.getId() : getPersistentEntityId(queryObject); builder // .id(id) // .document(elasticsearchConverter.mapObject(queryObject)); @@ -492,7 +493,7 @@ class RequestConverter { Object queryObject = query.getObject(); if (queryObject != null) { - String id = StringUtils.hasText(query.getId()) ? getPersistentEntityId(queryObject) : query.getId(); + String id = StringUtils.hasText(query.getId()) ? query.getId() : getPersistentEntityId(queryObject); builder // .id(id) // .document(elasticsearchConverter.mapObject(queryObject)); @@ -533,7 +534,7 @@ class RequestConverter { Object queryObject = query.getObject(); if (queryObject != null) { - String id = StringUtils.hasText(query.getId()) ? getPersistentEntityId(queryObject) : query.getId(); + String id = StringUtils.hasText(query.getId()) ? query.getId() : getPersistentEntityId(queryObject); builder // .id(id) // .document(elasticsearchConverter.mapObject(queryObject)); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java index f145ee774..aa4b3531e 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java @@ -128,6 +128,7 @@ import org.springframework.lang.Nullable; * @author Peer Mueller * @author Sijia Liu * @author Haibo Liu + * @author scoobyzhang */ @SpringIntegrationTest public abstract class ElasticsearchIntegrationTests { @@ -215,6 +216,26 @@ public abstract class ElasticsearchIntegrationTests { assertThatThrownBy(() -> operations.update(sampleEntity)).isInstanceOf(DataAccessException.class); } + @Test // #2405 + public void shouldNotIgnoreIdFromIndexQuery() { + String indexName = indexNameProvider.indexName(); + IndexCoordinates indexCoordinates = IndexCoordinates.of(indexName); + + SampleEntity object1 = SampleEntity.builder().id("objectId1").message("objectMessage1").build(); + SampleEntity object2 = SampleEntity.builder().id("objectId2").message("objectMessage2").build(); + List indexQueries = Arrays.asList( + new IndexQueryBuilder().withIndex(indexName).withId("idFromQuery1").withObject(object1) + .withOpType(IndexQuery.OpType.INDEX).build(), + new IndexQueryBuilder().withIndex(indexName).withId("idFromQuery2").withObject(object2) + .withOpType(IndexQuery.OpType.CREATE).build()); + operations.bulkIndex(indexQueries, indexCoordinates); + + boolean foundObject1 = operations.exists("idFromQuery1", indexCoordinates); + assertThat(foundObject1).isTrue(); + boolean foundObject2 = operations.exists("idFromQuery2", indexCoordinates); + assertThat(foundObject2).isTrue(); + } + @Test public void shouldThrowDataAccessExceptionIfDocumentDoesNotExistWhileDoingPartialUpdate() {