Skip to content

Commit 00ac1e8

Browse files
committed
DATAES-19 : Delete specific type in an index, Type exists check
1 parent 99a30a2 commit 00ac1e8

File tree

3 files changed

+57
-4
lines changed

3 files changed

+57
-4
lines changed

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,21 @@ public interface ElasticsearchOperations {
203203

204204
/**
205205
* Deletes an index for given entity
206-
*
206+
*
207207
* @param clazz
208208
* @param <T>
209209
* @return
210210
*/
211211
<T> boolean deleteIndex(Class<T> clazz);
212212

213+
/**
214+
* Deletes a type in an index
215+
*
216+
* @param index
217+
* @param type
218+
*/
219+
void deleteType(String index, String type);
220+
213221
/**
214222
* check if index is exists
215223
*
@@ -219,6 +227,15 @@ public interface ElasticsearchOperations {
219227
*/
220228
<T> boolean indexExists(Class<T> clazz);
221229

230+
/**
231+
* check if type is exists in an index
232+
*
233+
* @param index
234+
* @param type
235+
* @return
236+
*/
237+
boolean typeExists(String index, String type);
238+
222239
/**
223240
* refresh the index
224241
*

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.codehaus.jackson.map.DeserializationConfig;
2020
import org.codehaus.jackson.map.ObjectMapper;
2121
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
22+
import org.elasticsearch.action.admin.indices.mapping.delete.DeleteMappingRequest;
2223
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder;
2324
import org.elasticsearch.action.bulk.BulkItemResponse;
2425
import org.elasticsearch.action.bulk.BulkRequestBuilder;
@@ -252,6 +253,12 @@ public <T> boolean indexExists(Class<T> clazz) {
252253
return indexExists(getPersistentEntityFor(clazz).getIndexName());
253254
}
254255

256+
@Override
257+
public boolean typeExists(String index, String type) {
258+
return client.admin().cluster().prepareState().execute().actionGet()
259+
.getState().metaData().index(index).mappings().containsKey(type);
260+
}
261+
255262
@Override
256263
public <T> boolean deleteIndex(Class<T> clazz) {
257264
String indexName = getPersistentEntityFor(clazz).getIndexName();
@@ -261,6 +268,15 @@ public <T> boolean deleteIndex(Class<T> clazz) {
261268
return false;
262269
}
263270

271+
@Override
272+
public void deleteType(String index, String type){
273+
Map mappings = client.admin().cluster().prepareState().execute().actionGet()
274+
.getState().metaData().index(index).mappings();
275+
if (mappings.containsKey(type)) {
276+
client.admin().indices().deleteMapping(new DeleteMappingRequest(index).type(type)).actionGet();
277+
}
278+
}
279+
264280
@Override
265281
public String delete(String indexName, String type, String id) {
266282
return client.prepareDelete(indexName, type, id).execute().actionGet().getId();

src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@
4242
import static org.apache.commons.lang.RandomStringUtils.randomNumeric;
4343
import static org.elasticsearch.index.query.FilterBuilders.boolFilter;
4444
import static org.elasticsearch.index.query.FilterBuilders.termFilter;
45-
import static org.elasticsearch.index.query.QueryBuilders.fieldQuery;
46-
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
47-
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
45+
import static org.elasticsearch.index.query.QueryBuilders.*;
4846
import static org.hamcrest.Matchers.*;
4947
import static org.junit.Assert.*;
5048

@@ -829,4 +827,26 @@ public FacetedPage<SampleEntity> mapResults(SearchResponse response) {
829827

830828
}
831829

830+
@Test
831+
public void shouldDeleteSpecifiedTypeFromAnIndex() {
832+
// given
833+
String documentId = randomNumeric(5);
834+
SampleEntity sampleEntity = new SampleEntity();
835+
sampleEntity.setId(documentId);
836+
sampleEntity.setMessage("some message");
837+
sampleEntity.setVersion(System.currentTimeMillis());
838+
839+
IndexQuery indexQuery = new IndexQuery();
840+
indexQuery.setId(documentId);
841+
indexQuery.setObject(sampleEntity);
842+
843+
elasticsearchTemplate.index(indexQuery);
844+
845+
// when
846+
elasticsearchTemplate.deleteType("test-index","test-type");
847+
848+
//then
849+
boolean typeExists = elasticsearchTemplate.typeExists("test-index", "test-type");
850+
assertThat(typeExists, is(false));
851+
}
832852
}

0 commit comments

Comments
 (0)