diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java index a6027bb5b..81a8ef594 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java @@ -66,7 +66,6 @@ import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.callback.EntityCallbacks; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.data.util.CloseableIterator; import org.springframework.data.util.Streamable; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; @@ -95,7 +94,8 @@ protected void initialize(ElasticsearchConverter elasticsearchConverter) { Assert.notNull(elasticsearchConverter, "elasticsearchConverter must not be null."); this.elasticsearchConverter = elasticsearchConverter; - MappingContext, ElasticsearchPersistentProperty> mappingContext = this.elasticsearchConverter.getMappingContext(); + MappingContext, ElasticsearchPersistentProperty> mappingContext = this.elasticsearchConverter + .getMappingContext(); this.entityOperations = new EntityOperations(mappingContext); this.routingResolver = new DefaultRoutingResolver((SimpleElasticsearchMappingContext) mappingContext); @@ -611,25 +611,30 @@ protected List checkForBulkOperationFailure(BulkRespon } protected void updateIndexedObject(Object entity, IndexedObjectInformation indexedObjectInformation) { - ElasticsearchPersistentEntity persistentEntity = getRequiredPersistentEntity(entity.getClass()); - PersistentPropertyAccessor propertyAccessor = persistentEntity.getPropertyAccessor(entity); - ElasticsearchPersistentProperty idProperty = persistentEntity.getIdProperty(); - // Only deal with text because ES generated Ids are strings! - if (idProperty != null && idProperty.getType().isAssignableFrom(String.class)) { - propertyAccessor.setProperty(idProperty, indexedObjectInformation.getId()); - } + ElasticsearchPersistentEntity persistentEntity = elasticsearchConverter.getMappingContext() + .getPersistentEntity(entity.getClass()); - if (indexedObjectInformation.getSeqNo() != null && indexedObjectInformation.getPrimaryTerm() != null - && persistentEntity.hasSeqNoPrimaryTermProperty()) { - ElasticsearchPersistentProperty seqNoPrimaryTermProperty = persistentEntity.getSeqNoPrimaryTermProperty(); - propertyAccessor.setProperty(seqNoPrimaryTermProperty, - new SeqNoPrimaryTerm(indexedObjectInformation.getSeqNo(), indexedObjectInformation.getPrimaryTerm())); - } + if (persistentEntity != null) { + PersistentPropertyAccessor propertyAccessor = persistentEntity.getPropertyAccessor(entity); + ElasticsearchPersistentProperty idProperty = persistentEntity.getIdProperty(); + + // Only deal with text because ES generated Ids are strings! + if (idProperty != null && idProperty.getType().isAssignableFrom(String.class)) { + propertyAccessor.setProperty(idProperty, indexedObjectInformation.getId()); + } - if (indexedObjectInformation.getVersion() != null && persistentEntity.hasVersionProperty()) { - ElasticsearchPersistentProperty versionProperty = persistentEntity.getVersionProperty(); - propertyAccessor.setProperty(versionProperty, indexedObjectInformation.getVersion()); + if (indexedObjectInformation.getSeqNo() != null && indexedObjectInformation.getPrimaryTerm() != null + && persistentEntity.hasSeqNoPrimaryTermProperty()) { + ElasticsearchPersistentProperty seqNoPrimaryTermProperty = persistentEntity.getSeqNoPrimaryTermProperty(); + propertyAccessor.setProperty(seqNoPrimaryTermProperty, + new SeqNoPrimaryTerm(indexedObjectInformation.getSeqNo(), indexedObjectInformation.getPrimaryTerm())); + } + + if (indexedObjectInformation.getVersion() != null && persistentEntity.hasVersionProperty()) { + ElasticsearchPersistentProperty versionProperty = persistentEntity.getVersionProperty(); + propertyAccessor.setProperty(versionProperty, indexedObjectInformation.getVersion()); + } } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java index 8107d8a91..72b1adb05 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java @@ -148,7 +148,6 @@ public String doIndex(IndexQuery query, IndexCoordinates index) { IndexRequest request = prepareWriteRequest(requestFactory.indexRequest(query, index)); IndexResponse indexResponse = execute(client -> client.index(request, RequestOptions.DEFAULT)); - // We should call this because we are not going through a mapper. Object queryObject = query.getObject(); if (queryObject != null) { updateIndexedObject(queryObject, IndexedObjectInformation.of(indexResponse.getId(), indexResponse.getSeqNo(), diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 1b025b6e9..5727da50a 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -168,7 +168,6 @@ public String doIndex(IndexQuery query, IndexCoordinates index) { } String documentId = response.getId(); - // We should call this because we are not going through a mapper. Object queryObject = query.getObject(); if (queryObject != null) { updateIndexedObject(queryObject, IndexedObjectInformation.of(documentId, response.getSeqNo(),