mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 12:02:10 +00:00
Fix type of returned sort values.
Original Pull Request #2786 Closes #2777 (cherry picked from commit 3833975a1ad76ef9c90b1260b090ff1eb9af523c)
This commit is contained in:
parent
df76b43cb4
commit
0fb98eda39
@ -138,7 +138,7 @@ final class DocumentAdapters {
|
|||||||
document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0);
|
document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0);
|
||||||
|
|
||||||
float score = hit.score() != null ? hit.score().floatValue() : Float.NaN;
|
float score = hit.score() != null ? hit.score().floatValue() : Float.NaN;
|
||||||
return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toString).toArray(),
|
return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toObject).toArray(),
|
||||||
documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing());
|
documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,3 +237,4 @@ final class DocumentAdapters {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
🚝
|
||||||
|
@ -103,27 +103,27 @@ public abstract class NestedSortIntegrationTests {
|
|||||||
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(francisFordCoppola.id);
|
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(francisFordCoppola.id);
|
||||||
var sortValues = searchHits.getSearchHit(0).getSortValues();
|
var sortValues = searchHits.getSearchHit(0).getSortValues();
|
||||||
assertThat(sortValues).hasSize(1);
|
assertThat(sortValues).hasSize(1);
|
||||||
assertThat(sortValues.get(0)).isEqualTo("1924");
|
assertThat(sortValues.get(0)).isEqualTo(1924L);
|
||||||
|
|
||||||
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(stanleyKubrik.id);
|
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(stanleyKubrik.id);
|
||||||
sortValues = searchHits.getSearchHit(1).getSortValues();
|
sortValues = searchHits.getSearchHit(1).getSortValues();
|
||||||
assertThat(sortValues).hasSize(1);
|
assertThat(sortValues).hasSize(1);
|
||||||
assertThat(sortValues.get(0)).isEqualTo("1937");
|
assertThat(sortValues.get(0)).isEqualTo(1937L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // #1784
|
@Test // #1784
|
||||||
@DisplayName("should sort directors by year of birth of actor in their movies descending")
|
@DisplayName("should sort directors by year of birth of actor in their movies descending")
|
||||||
void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesDescending() {
|
void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesDescending() {
|
||||||
|
|
||||||
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
|
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
|
||||||
"movies.actors.yearOfBirth") //
|
"movies.actors.yearOfBirth") //
|
||||||
.withNested( //
|
.withNested( //
|
||||||
Nested.builder("movies") //
|
Nested.builder("movies") //
|
||||||
.withNested(Nested.builder("movies.actors") //
|
.withNested(Nested.builder("movies.actors") //
|
||||||
.build()) //
|
.build()) //
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
var query = Query.findAll().addSort(Sort.by(order));
|
var query = Query.findAll().addSort(Sort.by(order));
|
||||||
|
|
||||||
var searchHits = operations.search(query, Director.class);
|
var searchHits = operations.search(query, Director.class);
|
||||||
|
|
||||||
@ -132,32 +132,32 @@ var query = Query.findAll().addSort(Sort.by(order));
|
|||||||
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
|
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
|
||||||
var sortValues = searchHits.getSearchHit(0).getSortValues();
|
var sortValues = searchHits.getSearchHit(0).getSortValues();
|
||||||
assertThat(sortValues).hasSize(1);
|
assertThat(sortValues).hasSize(1);
|
||||||
assertThat(sortValues.get(0)).isEqualTo("1959");
|
assertThat(sortValues.get(0)).isEqualTo(1959L);
|
||||||
|
|
||||||
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
|
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
|
||||||
sortValues = searchHits.getSearchHit(1).getSortValues();
|
sortValues = searchHits.getSearchHit(1).getSortValues();
|
||||||
assertThat(sortValues).hasSize(1);
|
assertThat(sortValues).hasSize(1);
|
||||||
assertThat(sortValues.get(0)).isEqualTo("1946");
|
assertThat(sortValues.get(0)).isEqualTo(1946L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // #1784
|
@Test // #1784
|
||||||
@DisplayName("should sort directors by year of birth of male actor in their movies descending")
|
@DisplayName("should sort directors by year of birth of male actor in their movies descending")
|
||||||
void shouldSortDirectorsByYearOfBirthOfMaleActorInTheirMoviesDescending() {
|
void shouldSortDirectorsByYearOfBirthOfMaleActorInTheirMoviesDescending() {
|
||||||
|
|
||||||
var filter = StringQuery.builder("""
|
var filter = StringQuery.builder("""
|
||||||
{ "term": {"movies.actors.sex": "m"} }
|
{ "term": {"movies.actors.sex": "m"} }
|
||||||
""").build();
|
""").build();
|
||||||
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
|
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
|
||||||
"movies.actors.yearOfBirth") //
|
"movies.actors.yearOfBirth") //
|
||||||
.withNested( //
|
.withNested( //
|
||||||
Nested.builder("movies") //
|
Nested.builder("movies") //
|
||||||
.withNested( //
|
.withNested( //
|
||||||
Nested.builder("movies.actors") //
|
Nested.builder("movies.actors") //
|
||||||
.withFilter(filter) //
|
.withFilter(filter) //
|
||||||
.build()) //
|
.build()) //
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
var query = Query.findAll().addSort(Sort.by(order));
|
var query = Query.findAll().addSort(Sort.by(order));
|
||||||
|
|
||||||
var searchHits = operations.search(query, Director.class);
|
var searchHits = operations.search(query, Director.class);
|
||||||
|
|
||||||
@ -166,12 +166,12 @@ var query = Query.findAll().addSort(Sort.by(order));
|
|||||||
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
|
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
|
||||||
var sortValues = searchHits.getSearchHit(0).getSortValues();
|
var sortValues = searchHits.getSearchHit(0).getSortValues();
|
||||||
assertThat(sortValues).hasSize(1);
|
assertThat(sortValues).hasSize(1);
|
||||||
assertThat(sortValues.get(0)).isEqualTo("1959");
|
assertThat(sortValues.get(0)).isEqualTo(1959L);
|
||||||
|
|
||||||
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
|
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
|
||||||
sortValues = searchHits.getSearchHit(1).getSortValues();
|
sortValues = searchHits.getSearchHit(1).getSortValues();
|
||||||
assertThat(sortValues).hasSize(1);
|
assertThat(sortValues).hasSize(1);
|
||||||
assertThat(sortValues.get(0)).isEqualTo("1940");
|
assertThat(sortValues.get(0)).isEqualTo(1940L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Document(indexName = "#{@indexNameProvider.indexName()}")
|
@Document(indexName = "#{@indexNameProvider.indexName()}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user