|
1 | 1 | package com.netgrif.application.engine.elastic.service; |
2 | 2 |
|
3 | 3 | import co.elastic.clients.elasticsearch._types.FieldValue; |
| 4 | +import co.elastic.clients.elasticsearch._types.mapping.FieldType; |
4 | 5 | import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery; |
5 | 6 | import co.elastic.clients.elasticsearch._types.query_dsl.QueryStringQuery; |
6 | 7 | import co.elastic.clients.elasticsearch._types.query_dsl.TermsQueryField; |
@@ -138,7 +139,7 @@ public Page<Case> search(List<CaseSearchRequest> requests, LoggedUser user, Page |
138 | 139 | // TODO: impersonation |
139 | 140 | // LoggedUser loggedOrImpersonated = user.getSelfOrImpersonated(); |
140 | 141 | LoggedUser loggedOrImpersonated = user; |
141 | | - pageable = resolveUnmappedSortAttributes(pageable); |
| 142 | +// pageable = resolveUnmappedSortAttributes(pageable); |
142 | 143 | NativeQuery query = buildQuery(requests, loggedOrImpersonated, pageable, locale, isIntersection); |
143 | 144 | List<Case> casePage; |
144 | 145 | long total; |
@@ -190,11 +191,22 @@ protected NativeQuery buildQuery(List<CaseSearchRequest> requests, LoggedUser us |
190 | 191 | BinaryOperator<BoolQuery.Builder> reductionOperation = isIntersection ? (a, b) -> a.must(b.build()._toQuery()) : (a, b) -> a.should(b.build()._toQuery()); |
191 | 192 | BoolQuery.Builder query = singleQueries.stream().reduce(new BoolQuery.Builder(), reductionOperation); |
192 | 193 |
|
193 | | - NativeQueryBuilder builder = new NativeQueryBuilder(); |
194 | | - return builder |
| 194 | + NativeQueryBuilder builder = new NativeQueryBuilder() |
195 | 195 | .withQuery(query.build()._toQuery()) |
196 | | - .withPageable(pageable) |
197 | | - .build(); |
| 196 | + .withPageable(PageRequest.of(pageable.getPageNumber(), pageable.getPageSize())); |
| 197 | + |
| 198 | + for (org.springframework.data.domain.Sort.Order o : pageable.getSort()) { |
| 199 | + builder.withSort(s -> s.field(f -> f |
| 200 | + .field(o.getProperty()) |
| 201 | + .order(o.isAscending() |
| 202 | + ? co.elastic.clients.elasticsearch._types.SortOrder.Asc |
| 203 | + : co.elastic.clients.elasticsearch._types.SortOrder.Desc) |
| 204 | + .unmappedType(FieldType.Keyword) |
| 205 | + .missing("_last") |
| 206 | + )); |
| 207 | + } |
| 208 | + |
| 209 | + return builder.build(); |
198 | 210 | } |
199 | 211 |
|
200 | 212 | protected BoolQuery.Builder buildSingleQuery(CaseSearchRequest request, LoggedUser user, Locale locale) { |
|
0 commit comments