diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java index fabd15733..480f3d55c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java @@ -197,6 +197,22 @@ public interface ElasticsearchOperations { */ void delete(DeleteQuery query, Class clazz); + /** + * Deletes an index for given entity + * @param clazz + * @param + * @return + */ + boolean deleteIndex(Class clazz); + + /** + * check if index is exists + * @param clazz + * @param + * @return + */ + boolean indexExists(Class clazz); + /** * refresh the index * @param indexName 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 8fb584f34..b1be40ba3 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -18,6 +18,7 @@ package org.springframework.data.elasticsearch.core; import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.ObjectMapper; +import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder; import org.elasticsearch.action.bulk.BulkItemResponse; import org.elasticsearch.action.bulk.BulkRequestBuilder; @@ -226,6 +227,20 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { } } + @Override + public boolean indexExists(Class clazz){ + return indexExists(getPersistentEntityFor(clazz).getIndexName()); + } + + @Override + public boolean deleteIndex(Class clazz){ + String indexName = getPersistentEntityFor(clazz).getIndexName(); + if(indexExists(indexName)){ + return client.admin().indices().delete(new DeleteIndexRequest(indexName)).actionGet().acknowledged(); + } + return false; + } + @Override public String delete(String indexName, String type, String id) { return client.prepareDelete(indexName, type, id) diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java index f00eb7a24..cee9f3a70 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTest.java @@ -728,4 +728,16 @@ public class ElasticsearchTemplateTest { assertThat(elasticsearchTemplate.putMapping(entity) , is(true)) ; } + @Test + public void shouldDeleteIndexForGivenEntity(){ + //given + Class clazz = SampleEntity.class; + //when + elasticsearchTemplate.deleteIndex(clazz); + //then + assertThat(elasticsearchTemplate.indexExists(clazz),is(false)); + } + + + }