mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 20:12:11 +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);
|
<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
|
* Deletes an index for given entity
|
||||||
*
|
*
|
||||||
|
@ -295,6 +295,14 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
.setQuery(deleteQuery.getQuery()).execute().actionGet();
|
.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
|
@Override
|
||||||
public String scan(SearchQuery searchQuery, long scrollTimeInMillis, boolean noFields) {
|
public String scan(SearchQuery searchQuery, long scrollTimeInMillis, boolean noFields) {
|
||||||
Assert.notNull(searchQuery.getIndices(), "No index defined for Query");
|
Assert.notNull(searchQuery.getIndices(), "No index defined for Query");
|
||||||
|
@ -19,13 +19,15 @@ import org.elasticsearch.index.query.QueryBuilder;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* DeleteQuery
|
* DeleteQuery
|
||||||
*
|
*
|
||||||
* @author Rizwan Idrees
|
* @author Rizwan Idrees
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
public class DeleteQuery {
|
public class DeleteQuery {
|
||||||
|
|
||||||
private QueryBuilder query;
|
private QueryBuilder query;
|
||||||
|
private String index;
|
||||||
|
private String type;
|
||||||
|
|
||||||
public QueryBuilder getQuery() {
|
public QueryBuilder getQuery() {
|
||||||
return query;
|
return query;
|
||||||
@ -33,5 +35,21 @@ public class DeleteQuery {
|
|||||||
|
|
||||||
public void setQuery(QueryBuilder query) {
|
public void setQuery(QueryBuilder query) {
|
||||||
this.query = 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");
|
boolean typeExists = elasticsearchTemplate.typeExists("test-index", "test-type");
|
||||||
assertThat(typeExists, is(false));
|
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