DATAES-72 - Enhance Delete Index in ElasticsearchTemplate

added deleteIndex(String indexName) and indexExist(String  indexName) methods
This commit is contained in:
Mohsin Husen 2014-03-19 21:35:10 +00:00
parent d75dbbba94
commit 00eef9cb6c
3 changed files with 48 additions and 5 deletions

View File

@ -275,6 +275,14 @@ public interface ElasticsearchOperations {
*/ */
<T> boolean deleteIndex(Class<T> clazz); <T> boolean deleteIndex(Class<T> clazz);
/**
* Deletes an index for given indexName
*
* @param indexName
* @return
*/
boolean deleteIndex(String indexName);
/** /**
* Deletes a type in an index * Deletes a type in an index
* *
@ -292,6 +300,14 @@ public interface ElasticsearchOperations {
*/ */
<T> boolean indexExists(Class<T> clazz); <T> boolean indexExists(Class<T> clazz);
/**
* check if index is exists for given IndexName
*
* @param indexName
* @return
*/
boolean indexExists(String indexName);
/** /**
* check if type is exists in an index * check if type is exists in an index
* *

View File

@ -351,6 +351,11 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
return indexExists(getPersistentEntityFor(clazz).getIndexName()); return indexExists(getPersistentEntityFor(clazz).getIndexName());
} }
@Override
public boolean indexExists(String indexName) {
return client.admin().indices().exists(indicesExistsRequest(indexName)).actionGet().isExists();
}
@Override @Override
public boolean typeExists(String index, String type) { public boolean typeExists(String index, String type) {
return client.admin().cluster().prepareState().execute().actionGet() return client.admin().cluster().prepareState().execute().actionGet()
@ -359,7 +364,11 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
@Override @Override
public <T> boolean deleteIndex(Class<T> clazz) { public <T> boolean deleteIndex(Class<T> clazz) {
String indexName = getPersistentEntityFor(clazz).getIndexName(); return deleteIndex(getPersistentEntityFor(clazz).getIndexName());
}
@Override
public boolean deleteIndex(String indexName) {
if (indexExists(indexName)) { if (indexExists(indexName)) {
return client.admin().indices().delete(new DeleteIndexRequest(indexName)).actionGet().isAcknowledged(); 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); return indexExists(getPersistentEntityFor(clazz).getIndexName()) || createIndexWithSettings(clazz);
} }
private boolean indexExists(String indexName) {
return client.admin().indices().exists(indicesExistsRequest(indexName)).actionGet().isExists();
}
private <T> boolean createIndexWithSettings(Class<T> clazz) { private <T> boolean createIndexWithSettings(Class<T> clazz) {
ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz); ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz);
return client.admin().indices() return client.admin().indices()

View File

@ -1220,6 +1220,7 @@ public class ElasticsearchTemplateTests {
@Test @Test
public void shouldReturnCountForGivenSearchQueryWithGivenMultiIndices() { public void shouldReturnCountForGivenSearchQueryWithGivenMultiIndices() {
// given // given
cleanUpIndices();
String documentId1 = randomNumeric(5); String documentId1 = randomNumeric(5);
SampleEntity sampleEntity1 = new SampleEntityBuilder(documentId1).message("some message") SampleEntity sampleEntity1 = new SampleEntityBuilder(documentId1).message("some message")
.version(System.currentTimeMillis()).build(); .version(System.currentTimeMillis()).build();
@ -1252,12 +1253,33 @@ public class ElasticsearchTemplateTests {
assertThat(count, is(equalTo(2L))); 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 DATAES-67
*/ */
@Test @Test
public void shouldReturnCountForGivenSearchQueryWithGivenIndexNameForSpecificIndex() { public void shouldReturnCountForGivenSearchQueryWithGivenIndexNameForSpecificIndex() {
// given // given
cleanUpIndices();
String documentId1 = randomNumeric(5); String documentId1 = randomNumeric(5);
SampleEntity sampleEntity1 = new SampleEntityBuilder(documentId1).message("some message") SampleEntity sampleEntity1 = new SampleEntityBuilder(documentId1).message("some message")
.version(System.currentTimeMillis()).build(); .version(System.currentTimeMillis()).build();