Search code examples
elasticsearchspring-dataspring-data-elasticsearch

How to set OpType on IndexQuery in Spring Data Elasticsearch


Assume spring-boot-starter-data-elasticsearch version 2.1.0.RC1.

Take the following, simple implementation for indexing an entity:

IndexQuery indexQuery = new IndexQueryBuilder().withId(entity.getId()).withObject(entity).build();
String id = elasticsearchTemplate.index(indexQuery);

How do I set the OpType.CREATE on this operation, so that I can assure only documents get indexed which don't already exist?

The equivalent REST API request would look like the following:

POST /{index}/{entity id}?op_type=create
{
    "id" : "{entity id}",
    "attribute" : "value"
}

Solution

  • This is not supported at the moment by Spring Data ES.

    There's a open issue that reports exactly that feature, you might want to check it out: https://jira.spring.io/browse/DATAES-247