Skip to content

Commit 1a3333d

Browse files
committed
DATAES-631 - refactoring DeleteQuery.
1 parent 035c558 commit 1a3333d

File tree

8 files changed

+33
-110
lines changed

8 files changed

+33
-110
lines changed

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

+14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.springframework.data.elasticsearch.core;
22

3+
import org.elasticsearch.index.query.QueryBuilder;
34
import org.slf4j.Logger;
45
import org.slf4j.LoggerFactory;
56
import org.springframework.data.elasticsearch.ElasticsearchException;
@@ -10,9 +11,13 @@
1011
import org.springframework.data.elasticsearch.core.index.MappingBuilder;
1112
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
1213
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
14+
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
15+
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
1316
import org.springframework.util.Assert;
1417
import org.springframework.util.StringUtils;
1518

19+
import static org.springframework.util.StringUtils.*;
20+
1621
/**
1722
* AbstractElasticsearchTemplate
1823
*
@@ -78,4 +83,13 @@ public ElasticsearchPersistentEntity getPersistentEntityFor(Class clazz) {
7883
+ " is not a Document. Make sure the document class is annotated with @Document(indexName=\"foo\")");
7984
return elasticsearchConverter.getMappingContext().getRequiredPersistentEntity(clazz);
8085
}
86+
87+
@Override
88+
public void delete(CriteriaQuery criteriaQuery, IndexCoordinates index) {
89+
QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor().createQueryFromCriteria(criteriaQuery.getCriteria());
90+
Assert.notNull(elasticsearchQuery, "Query can not be null.");
91+
DeleteQuery deleteQuery = new DeleteQuery();
92+
deleteQuery.setQuery(elasticsearchQuery);
93+
delete(deleteQuery, index);
94+
}
8195
}

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

+4-22
Original file line numberDiff line numberDiff line change
@@ -423,39 +423,21 @@ default void bulkUpdate(List<UpdateQuery> queries, IndexCoordinates index) {
423423
*/
424424
String delete(String id, IndexCoordinates index);
425425

426-
/**
427-
* Delete the one object with provided id
428-
*
429-
* @param id
430-
* @param clazz
431-
* @return documentId of the document deleted
432-
*/
433-
default String delete(String id, Class<?> clazz) {
434-
return delete(id, getIndexCoordinatesFor(clazz));
435-
}
436-
437426
/**
438427
* Delete all records matching the criteria
439428
*
440-
* @param clazz
441429
* @param criteriaQuery
430+
* @param index
442431
*/
443-
<T> void delete(CriteriaQuery criteriaQuery, Class<T> clazz);
444-
445-
/**
446-
* Delete all records matching the query
447-
*
448-
* @param clazz
449-
* @param query
450-
*/
451-
<T> void delete(DeleteQuery query, Class<T> clazz);
432+
void delete(CriteriaQuery criteriaQuery, IndexCoordinates index);
452433

453434
/**
454435
* Delete all records matching the query
455436
*
456437
* @param query
438+
* @param index the index where to delete the records
457439
*/
458-
void delete(DeleteQuery query);
440+
void delete(DeleteQuery query, IndexCoordinates index);
459441

460442
/**
461443
* Deletes an index for given entity

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

+3-26
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
import org.springframework.data.domain.Pageable;
9696
import org.springframework.data.domain.Sort;
9797
import org.springframework.data.elasticsearch.ElasticsearchException;
98-
import org.springframework.data.elasticsearch.annotations.Document;
9998
import org.springframework.data.elasticsearch.annotations.Setting;
10099
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
101100
import org.springframework.data.elasticsearch.core.client.support.AliasData;
@@ -685,15 +684,9 @@ public String delete(String id, IndexCoordinates index) {
685684
}
686685

687686
@Override
688-
public <T> void delete(DeleteQuery deleteQuery, Class<T> clazz) {
689-
690-
String indexName = hasText(deleteQuery.getIndex()) ? deleteQuery.getIndex()
691-
: getPersistentEntityFor(clazz).getIndexName();
692-
String typeName = hasText(deleteQuery.getType()) ? deleteQuery.getType()
693-
: getPersistentEntityFor(clazz).getIndexType();
694-
695-
DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(indexName) //
696-
.setDocTypes(typeName) //
687+
public void delete(DeleteQuery deleteQuery, IndexCoordinates index) {
688+
DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(index.getIndexNames()) //
689+
.setDocTypes(index.getTypeNames()) //
697690
.setQuery(deleteQuery.getQuery()) //
698691
.setAbortOnVersionConflict(false) //
699692
.setRefresh(true);
@@ -711,22 +704,6 @@ public <T> void delete(DeleteQuery deleteQuery, Class<T> clazz) {
711704
}
712705
}
713706

714-
@Override
715-
public void delete(DeleteQuery deleteQuery) {
716-
Assert.notNull(deleteQuery.getIndex(), "No index defined for Query");
717-
Assert.notNull(deleteQuery.getType(), "No type define for Query");
718-
delete(deleteQuery, null);
719-
}
720-
721-
@Override
722-
public <T> void delete(CriteriaQuery criteriaQuery, Class<T> clazz) {
723-
QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor().createQueryFromCriteria(criteriaQuery.getCriteria());
724-
Assert.notNull(elasticsearchQuery, "Query can not be null.");
725-
DeleteQuery deleteQuery = new DeleteQuery();
726-
deleteQuery.setQuery(elasticsearchQuery);
727-
delete(deleteQuery, clazz);
728-
}
729-
730707
private <T> SearchRequest prepareScroll(Query query, long scrollTimeInMillis, Class<T> clazz) {
731708
setPersistentEntityIndexAndType(query, clazz);
732709
ElasticsearchPersistentEntity<?> entity = getPersistentEntity(clazz);

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

+3-25
Original file line numberDiff line numberDiff line change
@@ -546,44 +546,22 @@ public String delete(String id, IndexCoordinates index) {
546546
}
547547

548548
@Override
549-
public <T> void delete(DeleteQuery deleteQuery, Class<T> clazz) {
550-
551-
String indexName = !StringUtils.isEmpty(deleteQuery.getIndex()) ? deleteQuery.getIndex()
552-
: getPersistentEntityFor(clazz).getIndexName();
553-
String typeName = !StringUtils.isEmpty(deleteQuery.getType()) ? deleteQuery.getType()
554-
: getPersistentEntityFor(clazz).getIndexType();
555-
549+
public void delete(DeleteQuery deleteQuery, IndexCoordinates index) {
556550
DeleteByQueryRequestBuilder requestBuilder = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE) //
557-
.source(indexName) //
551+
.source(index.getIndexNames()) //
558552
.filter(deleteQuery.getQuery()) //
559553
.abortOnVersionConflict(false) //
560554
.refresh(true);
561555

562556
SearchRequestBuilder source = requestBuilder.source() //
563-
.setTypes(typeName);
557+
.setTypes(index.getTypeNames());
564558

565559
if (deleteQuery.getScrollTimeInMillis() != null)
566560
source.setScroll(TimeValue.timeValueMillis(deleteQuery.getScrollTimeInMillis()));
567561

568562
requestBuilder.get();
569563
}
570564

571-
@Override
572-
public void delete(DeleteQuery deleteQuery) {
573-
Assert.notNull(deleteQuery.getIndex(), "No index defined for Query");
574-
Assert.notNull(deleteQuery.getType(), "No type define for Query");
575-
delete(deleteQuery, null);
576-
}
577-
578-
@Override
579-
public <T> void delete(CriteriaQuery criteriaQuery, Class<T> clazz) {
580-
QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor().createQueryFromCriteria(criteriaQuery.getCriteria());
581-
Assert.notNull(elasticsearchQuery, "Query can not be null.");
582-
DeleteQuery deleteQuery = new DeleteQuery();
583-
deleteQuery.setQuery(elasticsearchQuery);
584-
delete(deleteQuery, clazz);
585-
}
586-
587565
private <T> SearchRequestBuilder prepareScroll(Query query, long scrollTimeInMillis, Class<T> clazz) {
588566
setPersistentEntityIndexAndType(query, clazz);
589567
return prepareScroll(query, scrollTimeInMillis, getPersistentEntity(clazz));

src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java

-22
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
public class DeleteQuery {
2828

2929
private QueryBuilder query;
30-
private String index;
31-
private String type;
3230
private Integer pageSize;
3331
private Long scrollTimeInMillis;
3432

@@ -40,26 +38,6 @@ public void setQuery(QueryBuilder query) {
4038
this.query = query;
4139
}
4240

43-
@Deprecated
44-
public String getIndex() {
45-
return index;
46-
}
47-
48-
@Deprecated
49-
public void setIndex(String index) {
50-
this.index = index;
51-
}
52-
53-
@Deprecated
54-
public String getType() {
55-
return type;
56-
}
57-
58-
@Deprecated
59-
public void setType(String type) {
60-
this.type = type;
61-
}
62-
6341
public Integer getPageSize() {
6442
return pageSize;
6543
}

src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchPartQuery.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public Object execute(Object[] parameters) {
6767

6868
if (tree.isDelete()) {
6969
Object result = countOrGetDocumentsForDelete(query, accessor);
70-
elasticsearchOperations.delete(query, queryMethod.getEntityInformation().getJavaType());
70+
elasticsearchOperations.delete(query, index);
7171
return result;
7272
} else if (queryMethod.isPageQuery()) {
7373
query.setPageable(accessor.getPageable());

src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ public void deleteAll() {
306306

307307
DeleteQuery deleteQuery = new DeleteQuery();
308308
deleteQuery.setQuery(matchAllQuery());
309-
elasticsearchOperations.delete(deleteQuery, getEntityClass());
309+
elasticsearchOperations.delete(deleteQuery, getIndexCoordinates());
310310
elasticsearchOperations.refresh(entityInformation.getIndexName());
311311
}
312312

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

+7-13
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ public void shouldDeleteDocumentForGivenQuery() {
475475
// when
476476
DeleteQuery deleteQuery = new DeleteQuery();
477477
deleteQuery.setQuery(termQuery("id", documentId));
478-
elasticsearchTemplate.delete(deleteQuery, SampleEntity.class);
478+
elasticsearchTemplate.delete(deleteQuery, indexCoordinates);
479479
elasticsearchTemplate.refresh(SampleEntity.class);
480480

481481
// then
@@ -508,10 +508,8 @@ public void shouldDeleteAcrossIndex() {
508508
// when
509509
DeleteQuery deleteQuery = new DeleteQuery();
510510
deleteQuery.setQuery(typeQuery(TYPE_NAME));
511-
deleteQuery.setType(TYPE_NAME);
512-
deleteQuery.setIndex("test-index-*");
513511

514-
elasticsearchTemplate.delete(deleteQuery);
512+
elasticsearchTemplate.delete(deleteQuery, IndexCoordinates.of("test-index-*", TYPE_NAME));
515513

516514
elasticsearchTemplate.refresh(INDEX_1_NAME);
517515
elasticsearchTemplate.refresh(INDEX_2_NAME);
@@ -550,10 +548,8 @@ public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
550548
// when
551549
DeleteQuery deleteQuery = new DeleteQuery();
552550
deleteQuery.setQuery(termQuery("message", "negative"));
553-
deleteQuery.setType(TYPE_NAME);
554-
deleteQuery.setIndex("test-index-*");
555551

556-
elasticsearchTemplate.delete(deleteQuery);
552+
elasticsearchTemplate.delete(deleteQuery, IndexCoordinates.of("test-index-*", TYPE_NAME));
557553

558554
elasticsearchTemplate.refresh(INDEX_1_NAME);
559555
elasticsearchTemplate.refresh(INDEX_2_NAME);
@@ -940,7 +936,7 @@ public void shouldDeleteGivenCriteriaQuery() {
940936
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").contains("test"));
941937

942938
// when
943-
elasticsearchTemplate.delete(criteriaQuery, SampleEntity.class);
939+
elasticsearchTemplate.delete(criteriaQuery, indexCoordinates);
944940
elasticsearchTemplate.refresh(SampleEntity.class);
945941

946942
// then
@@ -1601,9 +1597,7 @@ public void shouldDeleteDocumentBySpecifiedTypeUsingDeleteQuery() {
16011597
// when
16021598
DeleteQuery deleteQuery = new DeleteQuery();
16031599
deleteQuery.setQuery(termQuery("id", documentId));
1604-
deleteQuery.setIndex(INDEX_NAME_SAMPLE_ENTITY);
1605-
deleteQuery.setType(TYPE_NAME);
1606-
elasticsearchTemplate.delete(deleteQuery);
1600+
elasticsearchTemplate.delete(deleteQuery, indexCoordinates);
16071601
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
16081602

16091603
// then
@@ -2366,7 +2360,7 @@ public void shouldDeleteOnlyDocumentsMatchedByDeleteQuery() {
23662360
// when
23672361
DeleteQuery deleteQuery = new DeleteQuery();
23682362
deleteQuery.setQuery(idsQuery().addIds(documentIdToDelete));
2369-
elasticsearchTemplate.delete(deleteQuery, SampleEntity.class);
2363+
elasticsearchTemplate.delete(deleteQuery, indexCoordinates);
23702364
elasticsearchTemplate.refresh(SampleEntity.class);
23712365

23722366
// then
@@ -2397,7 +2391,7 @@ public void shouldDeleteOnlyDocumentsMatchedByCriteriaQuery() {
23972391

23982392
// when
23992393
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("id").is(documentIdToDelete));
2400-
elasticsearchTemplate.delete(criteriaQuery, SampleEntity.class);
2394+
elasticsearchTemplate.delete(criteriaQuery, indexCoordinates);
24012395
elasticsearchTemplate.refresh(SampleEntity.class);
24022396

24032397
// then

0 commit comments

Comments
 (0)