1
0
mirror of synced 2026-08-31 21:24:28 +00:00

DATAES-595 - Support for setting preference parameter in query.

Original PR: #288
This commit is contained in:
Azaza
2019-06-21 22:41:40 +02:00
committed by Peter-Josef Meisch
parent 7ea0a43162
commit 40ea40a763
8 changed files with 142 additions and 3 deletions
@@ -106,6 +106,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
* @author Ivan Greene
* @author Dmitriy Yakovlev
* @author Peter-Josef Meisch
* @author Farid Azaza
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
@@ -330,6 +331,54 @@ public class ElasticsearchTemplateTests {
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
}
@Test // DATAES-595
public void shouldReturnPageUsingLocalPreferenceForGivenSearchQuery() {
// given
String documentId = randomNumeric(5);
SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
.version(System.currentTimeMillis()).build();
IndexQuery indexQuery = getIndexQuery(sampleEntity);
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class);
SearchQuery searchQueryWithValidPreference = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withPreference("_local").build();
// when
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQueryWithValidPreference,
SampleEntity.class);
// then
assertThat(sampleEntities).isNotNull();
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
}
@Test(expected = Exception.class) // DATAES-595
public void shouldThrowExceptionWhenInvalidPreferenceForSearchQuery() {
// given
String documentId = randomNumeric(5);
SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
.version(System.currentTimeMillis()).build();
IndexQuery indexQuery = getIndexQuery(sampleEntity);
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class);
SearchQuery searchQueryWithInvalidPreference = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withPreference("_only_nodes:oops").build();
// when
elasticsearchTemplate.queryForPage(searchQueryWithInvalidPreference, SampleEntity.class);
// then Throw IllegalArgumentException in case of ElasticsearchTemplate and ElasticsearchStatusException in case of
// ElasticsearchRestTemplate
}
@Test // DATAES-422 - Add support for IndicesOptions in search queries
public void shouldPassIndicesOptionsForGivenSearchQuery() {
@@ -39,6 +39,7 @@ import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.elasticsearch.ElasticsearchStatusException;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -75,6 +76,7 @@ import org.springframework.util.StringUtils;
* @author Christoph Strobl
* @author Mark Paluch
* @author Peter-Josef Meisch
* @author Farid Azaza
* @currentRead Golden Fool - Robin Hobb
*/
@RunWith(SpringRunner.class)
@@ -389,6 +391,43 @@ public class ReactiveElasticsearchTemplateTests {
.verifyComplete();
}
@Test // DATAES-595
public void shouldReturnListUsingLocalPreferenceForGivenCriteria() {
SampleEntity sampleEntity1 = randomEntity("test message");
SampleEntity sampleEntity2 = randomEntity("test test");
SampleEntity sampleEntity3 = randomEntity("some message");
index(sampleEntity1, sampleEntity2, sampleEntity3);
CriteriaQuery queryWithValidPreference = new CriteriaQuery(
new Criteria("message").contains("some").and("message").contains("message"));
queryWithValidPreference.setPreference("_local");
template.find(queryWithValidPreference, SampleEntity.class) //
.as(StepVerifier::create) //
.expectNext(sampleEntity3) //
.verifyComplete();
}
@Test // DATAES-595
public void shouldThrowElasticsearchStatusExceptionWhenInvalidPreferenceForGivenCriteria() {
SampleEntity sampleEntity1 = randomEntity("test message");
SampleEntity sampleEntity2 = randomEntity("test test");
SampleEntity sampleEntity3 = randomEntity("some message");
index(sampleEntity1, sampleEntity2, sampleEntity3);
CriteriaQuery queryWithInvalidPreference = new CriteriaQuery(
new Criteria("message").contains("some").and("message").contains("message"));
queryWithInvalidPreference.setPreference("_only_nodes:oops");
template.find(queryWithInvalidPreference, SampleEntity.class) //
.as(StepVerifier::create) //
.expectError(ElasticsearchStatusException.class).verify();
}
@Test // DATAES-504
public void shouldReturnProjectedTargetEntity() {