DATAES-157 - support deleteBy operation
This commit is contained in:
@@ -559,6 +559,28 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(sampleEntity1, is(notNullValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeleteGivenCriteriaQuery() {
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity = new SampleEntityBuilder(documentId).message("test message")
|
||||
.version(System.currentTimeMillis()).build();
|
||||
|
||||
IndexQuery indexQuery = getIndexQuery(sampleEntity);
|
||||
|
||||
elasticsearchTemplate.index(indexQuery);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").contains("test"));
|
||||
|
||||
// when
|
||||
elasticsearchTemplate.delete(criteriaQuery, SampleEntity.class);
|
||||
// then
|
||||
StringQuery stringQuery = new StringQuery(matchAllQuery().toString());
|
||||
List<SampleEntity> sampleEntities = elasticsearchTemplate.queryForList(stringQuery, SampleEntity.class);
|
||||
|
||||
assertThat(sampleEntities.size(), is(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnSpecifiedFields() {
|
||||
// given
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package org.springframework.data.elasticsearch.repositories.sample;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.elasticsearch.entities.SampleEntity;
|
||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||
|
||||
@@ -24,4 +26,9 @@ import org.springframework.data.elasticsearch.repository.ElasticsearchRepository
|
||||
*/
|
||||
public interface SampleElasticsearchRepository extends ElasticsearchRepository<SampleEntity, String> {
|
||||
|
||||
long deleteById(String id);
|
||||
List<SampleEntity> deleteByAvailable(boolean available);
|
||||
List<SampleEntity> deleteByMessage(String message);
|
||||
void deleteByType(String type);
|
||||
|
||||
}
|
||||
|
||||
@@ -299,6 +299,118 @@ public class SimpleElasticsearchRepositoryTests {
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeleteById() {
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity = new SampleEntity();
|
||||
sampleEntity.setId(documentId);
|
||||
sampleEntity.setMessage("hello world.");
|
||||
sampleEntity.setVersion(System.currentTimeMillis());
|
||||
repository.save(sampleEntity);
|
||||
// when
|
||||
long result = repository.deleteById(documentId);
|
||||
// then
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||
assertThat(result, equalTo(1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeleteByMessageAndReturnList() {
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = new SampleEntity();
|
||||
sampleEntity1.setId(documentId);
|
||||
sampleEntity1.setMessage("hello world 1");
|
||||
sampleEntity1.setAvailable(true);
|
||||
sampleEntity1.setVersion(System.currentTimeMillis());
|
||||
|
||||
documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId);
|
||||
sampleEntity2.setMessage("hello world 2");
|
||||
sampleEntity2.setAvailable(true);
|
||||
sampleEntity2.setVersion(System.currentTimeMillis());
|
||||
|
||||
documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId);
|
||||
sampleEntity3.setMessage("hello world 3");
|
||||
sampleEntity3.setAvailable(false);
|
||||
sampleEntity3.setVersion(System.currentTimeMillis());
|
||||
repository.save(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));
|
||||
// when
|
||||
List<SampleEntity> result = repository.deleteByAvailable(true);
|
||||
// then
|
||||
assertThat(result.size(), equalTo(2));
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeleteByListForMessage() {
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = new SampleEntity();
|
||||
sampleEntity1.setId(documentId);
|
||||
sampleEntity1.setMessage("hello world 1");
|
||||
sampleEntity1.setVersion(System.currentTimeMillis());
|
||||
|
||||
documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId);
|
||||
sampleEntity2.setMessage("hello world 2");
|
||||
sampleEntity2.setVersion(System.currentTimeMillis());
|
||||
|
||||
documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId);
|
||||
sampleEntity3.setMessage("hello world 3");
|
||||
sampleEntity3.setVersion(System.currentTimeMillis());
|
||||
repository.save(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));
|
||||
// when
|
||||
List<SampleEntity> result = repository.deleteByMessage("hello world 3");
|
||||
// then
|
||||
assertThat(result.size(), equalTo(1));
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(2L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeleteByType() {
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = new SampleEntity();
|
||||
sampleEntity1.setId(documentId);
|
||||
sampleEntity1.setType("book");
|
||||
sampleEntity1.setVersion(System.currentTimeMillis());
|
||||
|
||||
documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId);
|
||||
sampleEntity2.setType("article");
|
||||
sampleEntity2.setVersion(System.currentTimeMillis());
|
||||
|
||||
documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId);
|
||||
sampleEntity3.setType("image");
|
||||
sampleEntity3.setVersion(System.currentTimeMillis());
|
||||
repository.save(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));
|
||||
// when
|
||||
repository.deleteByType("article");
|
||||
// then
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(2L));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void shouldDeleteEntity() {
|
||||
// given
|
||||
|
||||
Reference in New Issue
Block a user