DATAES-547 - Polishing.
Add test and directly use SearchHit to pass on the index name. Fix minor flaw in Exception translation for non existing indices along the way. Original Pull Request: #257
This commit is contained in:
@@ -66,12 +66,14 @@ import org.springframework.data.elasticsearch.entities.GTEVersionEntity;
|
||||
import org.springframework.data.elasticsearch.entities.HetroEntity1;
|
||||
import org.springframework.data.elasticsearch.entities.HetroEntity2;
|
||||
import org.springframework.data.elasticsearch.entities.SampleEntity;
|
||||
import org.springframework.data.elasticsearch.entities.SampleEntityUUIDKeyed;
|
||||
import org.springframework.data.elasticsearch.entities.SampleMappingEntity;
|
||||
import org.springframework.data.elasticsearch.entities.UseServerConfigurationEntity;
|
||||
import org.springframework.data.util.CloseableIterator;
|
||||
|
||||
/**
|
||||
* Base for testing rest/transport templates
|
||||
*
|
||||
* @author Rizwan Idrees
|
||||
* @author Mohsin Husen
|
||||
* @author Franck Marchand
|
||||
@@ -101,9 +103,15 @@ public class ElasticsearchTemplateTests {
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
|
||||
elasticsearchTemplate.deleteIndex(SampleEntity.class);
|
||||
elasticsearchTemplate.createIndex(SampleEntity.class);
|
||||
elasticsearchTemplate.putMapping(SampleEntity.class);
|
||||
|
||||
elasticsearchTemplate.deleteIndex(SampleEntityUUIDKeyed.class);
|
||||
elasticsearchTemplate.createIndex(SampleEntityUUIDKeyed.class);
|
||||
elasticsearchTemplate.putMapping(SampleEntityUUIDKeyed.class);
|
||||
|
||||
elasticsearchTemplate.deleteIndex(INDEX_1_NAME);
|
||||
elasticsearchTemplate.deleteIndex(INDEX_2_NAME);
|
||||
elasticsearchTemplate.deleteIndex(UseServerConfigurationEntity.class);
|
||||
@@ -405,6 +413,86 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||
}
|
||||
|
||||
@Test // DATAES-547
|
||||
public void shouldDeleteAcrossIndex() {
|
||||
|
||||
// given
|
||||
SampleEntity sampleEntity = SampleEntity.builder() //
|
||||
.message("foo") //
|
||||
.version(System.currentTimeMillis()) //
|
||||
.build();
|
||||
|
||||
IndexQuery idxQuery1 = new IndexQueryBuilder().withIndexName(INDEX_1_NAME).withId(randomNumeric(5))
|
||||
.withObject(sampleEntity).build();
|
||||
|
||||
elasticsearchTemplate.index(idxQuery1);
|
||||
elasticsearchTemplate.refresh(INDEX_1_NAME);
|
||||
|
||||
IndexQuery idxQuery2 = new IndexQueryBuilder().withIndexName(INDEX_2_NAME).withId(randomNumeric(5))
|
||||
.withObject(sampleEntity).build();
|
||||
|
||||
elasticsearchTemplate.index(idxQuery2);
|
||||
elasticsearchTemplate.refresh(INDEX_2_NAME);
|
||||
|
||||
// when
|
||||
DeleteQuery deleteQuery = new DeleteQuery();
|
||||
deleteQuery.setQuery(termQuery("message", "foo"));
|
||||
deleteQuery.setType("test-type");
|
||||
deleteQuery.setIndex("test-index-*");
|
||||
|
||||
elasticsearchTemplate.delete(deleteQuery);
|
||||
|
||||
elasticsearchTemplate.refresh(INDEX_1_NAME);
|
||||
elasticsearchTemplate.refresh(INDEX_2_NAME);
|
||||
|
||||
// then
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "foo"))
|
||||
.withIndices(INDEX_1_NAME, INDEX_2_NAME) //
|
||||
.build();
|
||||
|
||||
assertThat(elasticsearchTemplate.count(searchQuery), equalTo(0L));
|
||||
}
|
||||
|
||||
@Test // DATAES-547
|
||||
public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
|
||||
|
||||
// given
|
||||
SampleEntity sampleEntity = SampleEntity.builder() //
|
||||
.message("positive") //
|
||||
.version(System.currentTimeMillis()) //
|
||||
.build();
|
||||
|
||||
IndexQuery idxQuery1 = new IndexQueryBuilder().withIndexName(INDEX_1_NAME).withId(randomNumeric(5))
|
||||
.withObject(sampleEntity).build();
|
||||
|
||||
elasticsearchTemplate.index(idxQuery1);
|
||||
elasticsearchTemplate.refresh(INDEX_1_NAME);
|
||||
|
||||
IndexQuery idxQuery2 = new IndexQueryBuilder().withIndexName(INDEX_2_NAME).withId(randomNumeric(5))
|
||||
.withObject(sampleEntity).build();
|
||||
|
||||
elasticsearchTemplate.index(idxQuery2);
|
||||
elasticsearchTemplate.refresh(INDEX_2_NAME);
|
||||
|
||||
// when
|
||||
DeleteQuery deleteQuery = new DeleteQuery();
|
||||
deleteQuery.setQuery(termQuery("message", "negative"));
|
||||
deleteQuery.setType("test-type");
|
||||
deleteQuery.setIndex("test-index-*");
|
||||
|
||||
elasticsearchTemplate.delete(deleteQuery);
|
||||
|
||||
elasticsearchTemplate.refresh(INDEX_1_NAME);
|
||||
elasticsearchTemplate.refresh(INDEX_2_NAME);
|
||||
|
||||
// then
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "positive"))
|
||||
.withIndices(INDEX_1_NAME, INDEX_2_NAME) //
|
||||
.build();
|
||||
|
||||
assertThat(elasticsearchTemplate.count(searchQuery), equalTo(2L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldFilterSearchResultsForGivenFilter() {
|
||||
// given
|
||||
|
||||
@@ -52,6 +52,8 @@ import org.springframework.data.elasticsearch.core.query.Criteria;
|
||||
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
||||
import org.springframework.data.elasticsearch.entities.SampleEntity;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@@ -519,6 +521,62 @@ public class ReactiveElasticsearchTemplateTests {
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAES-547
|
||||
@ElasticsearchVersion(asOf = "6.5.0")
|
||||
public void shouldDeleteAcrossIndex() {
|
||||
|
||||
String indexPrefix = "rx-template-test-index";
|
||||
String thisIndex = indexPrefix + "-this";
|
||||
String thatIndex = indexPrefix + "-that";
|
||||
|
||||
template.save(randomEntity("test"), thisIndex) //
|
||||
.then(template.save(randomEntity("test"), thatIndex)) //
|
||||
.then() //
|
||||
.as(StepVerifier::create)//
|
||||
.verifyComplete();
|
||||
|
||||
restTemplate.refresh(thisIndex);
|
||||
restTemplate.refresh(thatIndex);
|
||||
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder() //
|
||||
.withQuery(termQuery("message", "test")) //
|
||||
.withIndices(indexPrefix + "*") //
|
||||
.build();
|
||||
|
||||
template.deleteBy(searchQuery, SampleEntity.class) //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(2L) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAES-547
|
||||
@ElasticsearchVersion(asOf = "6.5.0")
|
||||
public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
|
||||
|
||||
String indexPrefix = "rx-template-test-index";
|
||||
String thisIndex = indexPrefix + "-this";
|
||||
String thatIndex = indexPrefix + "-that";
|
||||
|
||||
template.save(randomEntity("positive"), thisIndex) //
|
||||
.then(template.save(randomEntity("positive"), thatIndex)) //
|
||||
.then() //
|
||||
.as(StepVerifier::create)//
|
||||
.verifyComplete();
|
||||
|
||||
restTemplate.refresh(thisIndex);
|
||||
restTemplate.refresh(thatIndex);
|
||||
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder() //
|
||||
.withQuery(termQuery("message", "negative")) //
|
||||
.withIndices(indexPrefix + "*") //
|
||||
.build();
|
||||
|
||||
template.deleteBy(searchQuery, SampleEntity.class) //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(0L) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAES-504
|
||||
@ElasticsearchVersion(asOf = "6.5.0")
|
||||
public void deleteByQueryShouldReturnNumberOfDeletedDocuments() {
|
||||
|
||||
Reference in New Issue
Block a user