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 91a0a48d5..1999239bb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -261,8 +261,16 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { String type = isBlank(query.getType())? retrieveTypeFromPersistentEntity(query.getObject().getClass())[0] : query.getType(); - IndexRequestBuilder indexRequestBuilder = client.prepareIndex(indexName,type,query.getId()) - .setSource(objectMapper.writeValueAsString(query.getObject())); + IndexRequestBuilder indexRequestBuilder = null; + + if(query.getId() != null){ + indexRequestBuilder = client.prepareIndex(indexName,type,query.getId()); + }else { + indexRequestBuilder = client.prepareIndex(indexName,type); + } + + indexRequestBuilder.setSource(objectMapper.writeValueAsString(query.getObject())); + if(query.getVersion() != null){ indexRequestBuilder.setVersion(query.getVersion()); indexRequestBuilder.setVersionType(EXTERNAL); diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java index 79c5f528a..b776752d0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java @@ -55,10 +55,13 @@ public class MappingElasticsearchEntityInformation e public ID getId(T entity) { ElasticsearchPersistentProperty id = entityMetadata.getIdProperty(); try { - return (ID) BeanWrapper.create(entity, null).getProperty(id); + if(id != null){ + return (ID) BeanWrapper.create(entity, null).getProperty(id); + } } catch (Exception e) { throw new IllegalStateException("ID could not be resolved", e); } + return null; } @SuppressWarnings("unchecked")