From d756f2b8bf87719637de5e623fa7d8883c76900e Mon Sep 17 00:00:00 2001 From: "seunghyun.cheong" Date: Fri, 23 Jun 2023 18:01:03 +0900 Subject: [PATCH] Adding GeoDistanceOrder's direction --- .../client/elc/RequestConverter.java | 3 ++- .../data/elasticsearch/client/elc/TypeUtils.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java index bb077c693..7803cfdc6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java @@ -1497,8 +1497,9 @@ private SortOptions getSortOptions(Sort.Order order, @Nullable ElasticsearchPers return SortOptions.of(so -> so // .geoDistance(gd -> gd // .field(fieldName) // - .location(loc -> loc.latlon(Queries.latLon(geoDistanceOrder.getGeoPoint())))// + .location(loc -> loc.latlon(Queries.latLon(geoDistanceOrder.getGeoPoint()))) // .distanceType(geoDistanceType(geoDistanceOrder.getDistanceType())).mode(sortMode(finalMode)) // + .order(sortOrder(geoDistanceOrder.getDirection())) // .unit(distanceUnit(geoDistanceOrder.getUnit())) // .ignoreUnmapped(geoDistanceOrder.getIgnoreUnmapped()))); } else { diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java index ba2ae1c5d..fb9f5fe73 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.stream.Collectors; +import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.query.*; @@ -165,6 +166,20 @@ static GeoDistanceType geoDistanceType(GeoDistanceOrder.DistanceType distanceTyp } + @Nullable + static SortOrder sortOrder(@Nullable Sort.Direction direction) { + + if (direction == null) { + return null; + } + + return switch (direction) { + case ASC -> SortOrder.Asc; + case DESC -> SortOrder.Desc; + }; + + } + @Nullable static HighlighterFragmenter highlighterFragmenter(@Nullable String value) {