Skip to content

Commit 3195287

Browse files
committed
[NAE-2197] Elastic Mapping Fixes
- Updated the `buildQuery` method to enhance query creation: - Added explicit handling for unmapped fields by setting `FieldType.Keyword`. - Included fallback handling for missing values using `_last`.
1 parent 9b5dc59 commit 3195287

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseService.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.netgrif.application.engine.elastic.service;
22

33
import co.elastic.clients.elasticsearch._types.FieldValue;
4+
import co.elastic.clients.elasticsearch._types.mapping.FieldType;
45
import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery;
56
import co.elastic.clients.elasticsearch._types.query_dsl.QueryStringQuery;
67
import co.elastic.clients.elasticsearch._types.query_dsl.TermsQueryField;
@@ -138,7 +139,7 @@ public Page<Case> search(List<CaseSearchRequest> requests, LoggedUser user, Page
138139
// TODO: impersonation
139140
// LoggedUser loggedOrImpersonated = user.getSelfOrImpersonated();
140141
LoggedUser loggedOrImpersonated = user;
141-
pageable = resolveUnmappedSortAttributes(pageable);
142+
// pageable = resolveUnmappedSortAttributes(pageable);
142143
NativeQuery query = buildQuery(requests, loggedOrImpersonated, pageable, locale, isIntersection);
143144
List<Case> casePage;
144145
long total;
@@ -190,11 +191,22 @@ protected NativeQuery buildQuery(List<CaseSearchRequest> requests, LoggedUser us
190191
BinaryOperator<BoolQuery.Builder> reductionOperation = isIntersection ? (a, b) -> a.must(b.build()._toQuery()) : (a, b) -> a.should(b.build()._toQuery());
191192
BoolQuery.Builder query = singleQueries.stream().reduce(new BoolQuery.Builder(), reductionOperation);
192193

193-
NativeQueryBuilder builder = new NativeQueryBuilder();
194-
return builder
194+
NativeQueryBuilder builder = new NativeQueryBuilder()
195195
.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();
198210
}
199211

200212
protected BoolQuery.Builder buildSingleQuery(CaseSearchRequest request, LoggedUser user, Locale locale) {

0 commit comments

Comments
 (0)