DATAES-312 - Fix NullHandling.NULLS_LAST in query.sort
Original pull request: #163
This commit is contained in:
@@ -494,6 +494,106 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(sampleEntities.getContent().get(1).getMessage(), is(sampleEntity1.getMessage()));
|
||||
}
|
||||
|
||||
@Test // DATAES-312
|
||||
public void shouldSortResultsGivenNullFirstSortCriteria() {
|
||||
// given
|
||||
List<IndexQuery> indexQueries;
|
||||
|
||||
// first document
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = SampleEntity.builder()
|
||||
.id(documentId)
|
||||
.message("abc")
|
||||
.rate(15)
|
||||
.version(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
// second document
|
||||
String documentId2 = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = SampleEntity.builder()
|
||||
.id(documentId2)
|
||||
.message("xyz")
|
||||
.rate(5)
|
||||
.version(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
// third document
|
||||
String documentId3 = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = SampleEntity.builder()
|
||||
.id(documentId3)
|
||||
.rate(10)
|
||||
.version(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));
|
||||
|
||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class);
|
||||
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder()
|
||||
.withQuery(matchAllQuery())
|
||||
.withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsFirst())))
|
||||
.build();
|
||||
|
||||
// when
|
||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||
|
||||
// then
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(3L));
|
||||
assertThat(sampleEntities.getContent().get(0).getRate(), is(sampleEntity3.getRate()));
|
||||
assertThat(sampleEntities.getContent().get(1).getMessage(), is(sampleEntity1.getMessage()));
|
||||
}
|
||||
|
||||
@Test // DATAES-312
|
||||
public void shouldSortResultsGivenNullLastSortCriteria() {
|
||||
// given
|
||||
List<IndexQuery> indexQueries;
|
||||
|
||||
// first document
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = SampleEntity.builder()
|
||||
.id(documentId)
|
||||
.message("abc")
|
||||
.rate(15)
|
||||
.version(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
// second document
|
||||
String documentId2 = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = SampleEntity.builder()
|
||||
.id(documentId2)
|
||||
.message("xyz")
|
||||
.rate(5)
|
||||
.version(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
// third document
|
||||
String documentId3 = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = SampleEntity.builder()
|
||||
.id(documentId3)
|
||||
.rate(10)
|
||||
.version(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3));
|
||||
|
||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class);
|
||||
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder()
|
||||
.withQuery(matchAllQuery())
|
||||
.withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsLast())))
|
||||
.build();
|
||||
|
||||
// when
|
||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||
|
||||
// then
|
||||
assertThat(sampleEntities.getTotalElements(), equalTo(3L));
|
||||
assertThat(sampleEntities.getContent().get(0).getRate(), is(sampleEntity1.getRate()));
|
||||
assertThat(sampleEntities.getContent().get(1).getMessage(), is(sampleEntity2.getMessage()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldExecuteStringQuery() {
|
||||
// given
|
||||
@@ -2100,4 +2200,4 @@ public class ElasticsearchTemplateTests {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user