Skip to content

Commit 3833975

Browse files
authored
Fix type of returned sort values.
Original Pull Request #2786 Closes #2777
1 parent 05ca90e commit 3833975

File tree

2 files changed

+29
-28
lines changed

2 files changed

+29
-28
lines changed

src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public static SearchDocument from(Hit<?> hit, JsonpMapper jsonpMapper) {
138138
document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0);
139139

140140
float score = hit.score() != null ? hit.score().floatValue() : Float.NaN;
141-
return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toString).toArray(),
141+
return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toObject).toArray(),
142142
documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing());
143143
}
144144

@@ -237,3 +237,4 @@ public static List<MultiGetItem<Document>> from(MgetResponse<EntityAsMap> mgetRe
237237
.collect(Collectors.toList());
238238
}
239239
}
240+
🚝

src/test/java/org/springframework/data/elasticsearch/core/query/sort/NestedSortIntegrationTests.java

+27-27
Original file line numberDiff line numberDiff line change
@@ -103,27 +103,27 @@ void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesAscending() {
103103
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(francisFordCoppola.id);
104104
var sortValues = searchHits.getSearchHit(0).getSortValues();
105105
assertThat(sortValues).hasSize(1);
106-
assertThat(sortValues.get(0)).isEqualTo("1924");
106+
assertThat(sortValues.get(0)).isEqualTo(1924L);
107107

108108
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(stanleyKubrik.id);
109109
sortValues = searchHits.getSearchHit(1).getSortValues();
110110
assertThat(sortValues).hasSize(1);
111-
assertThat(sortValues.get(0)).isEqualTo("1937");
111+
assertThat(sortValues.get(0)).isEqualTo(1937L);
112112
}
113113

114114
@Test // #1784
115115
@DisplayName("should sort directors by year of birth of actor in their movies descending")
116116
void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesDescending() {
117117

118-
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
119-
"movies.actors.yearOfBirth") //
120-
.withNested( //
121-
Nested.builder("movies") //
122-
.withNested(Nested.builder("movies.actors") //
123-
.build()) //
124-
.build());
118+
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
119+
"movies.actors.yearOfBirth") //
120+
.withNested( //
121+
Nested.builder("movies") //
122+
.withNested(Nested.builder("movies.actors") //
123+
.build()) //
124+
.build());
125125

126-
var query = Query.findAll().addSort(Sort.by(order));
126+
var query = Query.findAll().addSort(Sort.by(order));
127127

128128
var searchHits = operations.search(query, Director.class);
129129

@@ -132,32 +132,32 @@ void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesDescending() {
132132
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
133133
var sortValues = searchHits.getSearchHit(0).getSortValues();
134134
assertThat(sortValues).hasSize(1);
135-
assertThat(sortValues.get(0)).isEqualTo("1959");
135+
assertThat(sortValues.get(0)).isEqualTo(1959L);
136136

137137
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
138138
sortValues = searchHits.getSearchHit(1).getSortValues();
139139
assertThat(sortValues).hasSize(1);
140-
assertThat(sortValues.get(0)).isEqualTo("1946");
140+
assertThat(sortValues.get(0)).isEqualTo(1946L);
141141
}
142142

143143
@Test // #1784
144144
@DisplayName("should sort directors by year of birth of male actor in their movies descending")
145145
void shouldSortDirectorsByYearOfBirthOfMaleActorInTheirMoviesDescending() {
146146

147-
var filter = StringQuery.builder("""
148-
{ "term": {"movies.actors.sex": "m"} }
149-
""").build();
150-
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
151-
"movies.actors.yearOfBirth") //
152-
.withNested( //
153-
Nested.builder("movies") //
154-
.withNested( //
155-
Nested.builder("movies.actors") //
156-
.withFilter(filter) //
157-
.build()) //
158-
.build());
147+
var filter = StringQuery.builder("""
148+
{ "term": {"movies.actors.sex": "m"} }
149+
""").build();
150+
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
151+
"movies.actors.yearOfBirth") //
152+
.withNested( //
153+
Nested.builder("movies") //
154+
.withNested( //
155+
Nested.builder("movies.actors") //
156+
.withFilter(filter) //
157+
.build()) //
158+
.build());
159159

160-
var query = Query.findAll().addSort(Sort.by(order));
160+
var query = Query.findAll().addSort(Sort.by(order));
161161

162162
var searchHits = operations.search(query, Director.class);
163163

@@ -166,12 +166,12 @@ void shouldSortDirectorsByYearOfBirthOfMaleActorInTheirMoviesDescending() {
166166
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
167167
var sortValues = searchHits.getSearchHit(0).getSortValues();
168168
assertThat(sortValues).hasSize(1);
169-
assertThat(sortValues.get(0)).isEqualTo("1959");
169+
assertThat(sortValues.get(0)).isEqualTo(1959L);
170170

171171
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
172172
sortValues = searchHits.getSearchHit(1).getSortValues();
173173
assertThat(sortValues).hasSize(1);
174-
assertThat(sortValues.get(0)).isEqualTo("1940");
174+
assertThat(sortValues.get(0)).isEqualTo(1940L);
175175
}
176176

177177
@Document(indexName = "#{@indexNameProvider.indexName()}")

0 commit comments

Comments
 (0)