mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 03:52:10 +00:00
DATAES-18 : Add Support to specify Index Name and type in Delete Query
This commit is contained in:
parent
00ac1e8c95
commit
1152e00a31
@ -201,6 +201,13 @@ public interface ElasticsearchOperations {
|
||||
*/
|
||||
<T> void delete(DeleteQuery query, Class<T> clazz);
|
||||
|
||||
/**
|
||||
* Delete all records matching the query
|
||||
*
|
||||
* @param query
|
||||
*/
|
||||
void delete(DeleteQuery query);
|
||||
|
||||
/**
|
||||
* Deletes an index for given entity
|
||||
*
|
||||
|
@ -295,6 +295,14 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
||||
.setQuery(deleteQuery.getQuery()).execute().actionGet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(DeleteQuery deleteQuery) {
|
||||
Assert.notNull(deleteQuery.getIndex(), "No index defined for Query");
|
||||
Assert.notNull(deleteQuery.getType(), "No type define for Query");
|
||||
client.prepareDeleteByQuery(deleteQuery.getIndex()).setTypes(deleteQuery.getType())
|
||||
.setQuery(deleteQuery.getQuery()).execute().actionGet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String scan(SearchQuery searchQuery, long scrollTimeInMillis, boolean noFields) {
|
||||
Assert.notNull(searchQuery.getIndices(), "No index defined for Query");
|
||||
|
@ -26,6 +26,8 @@ import org.elasticsearch.index.query.QueryBuilder;
|
||||
public class DeleteQuery {
|
||||
|
||||
private QueryBuilder query;
|
||||
private String index;
|
||||
private String type;
|
||||
|
||||
public QueryBuilder getQuery() {
|
||||
return query;
|
||||
@ -34,4 +36,20 @@ public class DeleteQuery {
|
||||
public void setQuery(QueryBuilder query) {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
public String getIndex() {
|
||||
return index;
|
||||
}
|
||||
|
||||
public void setIndex(String index) {
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
@ -849,4 +849,31 @@ public class ElasticsearchTemplateTests {
|
||||
boolean typeExists = elasticsearchTemplate.typeExists("test-index", "test-type");
|
||||
assertThat(typeExists, is(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeleteDocumentBySpecifiedTypeUsingDeleteQuery(){
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity = new SampleEntity();
|
||||
sampleEntity.setId(documentId);
|
||||
sampleEntity.setMessage("some message");
|
||||
sampleEntity.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery = new IndexQuery();
|
||||
indexQuery.setId(documentId);
|
||||
indexQuery.setObject(sampleEntity);
|
||||
|
||||
elasticsearchTemplate.index(indexQuery);
|
||||
// when
|
||||
DeleteQuery deleteQuery = new DeleteQuery();
|
||||
deleteQuery.setQuery(fieldQuery("id", documentId));
|
||||
deleteQuery.setIndex("test-index");
|
||||
deleteQuery.setType("test-type");
|
||||
elasticsearchTemplate.delete(deleteQuery);
|
||||
// then
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user