From 00eef9cb6c8ed89dd25fb32636994aef5a0f80f3 Mon Sep 17 00:00:00 2001 From: Mohsin Husen Date: Wed, 19 Mar 2014 21:35:10 +0000 Subject: [PATCH] DATAES-72 - Enhance Delete Index in ElasticsearchTemplate added deleteIndex(String indexName) and indexExist(String indexName) methods --- .../core/ElasticsearchOperations.java | 16 ++++++++++++++ .../core/ElasticsearchTemplate.java | 15 ++++++++----- .../core/ElasticsearchTemplateTests.java | 22 +++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) 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 51bcbe77e..7b9c7fcea 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java @@ -275,6 +275,14 @@ public interface ElasticsearchOperations { */ boolean deleteIndex(Class clazz); + /** + * Deletes an index for given indexName + * + * @param indexName + * @return + */ + boolean deleteIndex(String indexName); + /** * Deletes a type in an index * @@ -292,6 +300,14 @@ public interface ElasticsearchOperations { */ boolean indexExists(Class clazz); + /** + * check if index is exists for given IndexName + * + * @param indexName + * @return + */ + boolean indexExists(String indexName); + /** * check if type is exists in an index * 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 816327e63..b46da4c7c 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -351,6 +351,11 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { return indexExists(getPersistentEntityFor(clazz).getIndexName()); } + @Override + public boolean indexExists(String indexName) { + return client.admin().indices().exists(indicesExistsRequest(indexName)).actionGet().isExists(); + } + @Override public boolean typeExists(String index, String type) { return client.admin().cluster().prepareState().execute().actionGet() @@ -359,7 +364,11 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { @Override public boolean deleteIndex(Class clazz) { - String indexName = getPersistentEntityFor(clazz).getIndexName(); + return deleteIndex(getPersistentEntityFor(clazz).getIndexName()); + } + + @Override + public boolean deleteIndex(String indexName) { if (indexExists(indexName)) { return client.admin().indices().delete(new DeleteIndexRequest(indexName)).actionGet().isAcknowledged(); } @@ -533,10 +542,6 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { return indexExists(getPersistentEntityFor(clazz).getIndexName()) || createIndexWithSettings(clazz); } - private boolean indexExists(String indexName) { - return client.admin().indices().exists(indicesExistsRequest(indexName)).actionGet().isExists(); - } - private boolean createIndexWithSettings(Class clazz) { ElasticsearchPersistentEntity persistentEntity = getPersistentEntityFor(clazz); return client.admin().indices() diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java index 45ee00ace..6c5a550bc 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java @@ -1220,6 +1220,7 @@ public class ElasticsearchTemplateTests { @Test public void shouldReturnCountForGivenSearchQueryWithGivenMultiIndices() { // given + cleanUpIndices(); String documentId1 = randomNumeric(5); SampleEntity sampleEntity1 = new SampleEntityBuilder(documentId1).message("some message") .version(System.currentTimeMillis()).build(); @@ -1252,12 +1253,33 @@ public class ElasticsearchTemplateTests { assertThat(count, is(equalTo(2L))); } + private void cleanUpIndices() { + elasticsearchTemplate.deleteIndex("test-index-1"); + elasticsearchTemplate.deleteIndex("test-index-2"); + } + + /* + DATAES-72 + */ + @Test + public void shouldDeleteIndexForSpecifiedIndexName() { + //given + elasticsearchTemplate.createIndex(SampleEntity.class); + elasticsearchTemplate.refresh(SampleEntity.class, true); + + // when + elasticsearchTemplate.deleteIndex("test-index"); + // then + assertThat(elasticsearchTemplate.indexExists("test-index"), is(false)); + } + /* DATAES-67 */ @Test public void shouldReturnCountForGivenSearchQueryWithGivenIndexNameForSpecificIndex() { // given + cleanUpIndices(); String documentId1 = randomNumeric(5); SampleEntity sampleEntity1 = new SampleEntityBuilder(documentId1).message("some message") .version(System.currentTimeMillis()).build();