From 8fb9e783871067bf586db3825051be0111f082d5 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Fri, 12 Jun 2026 18:22:12 +1000 Subject: [PATCH] Support sort _score/_doc order shorthand This commit adds support for the shorthand version of _score and _doc sort order of the form: {"_score": "desc"} --- .../client/opensearch/_types/ScoreSort.java | 2 +- .../opensearch/_types/SortOptionsTest.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/_types/ScoreSort.java b/java-client/src/main/java/org/opensearch/client/opensearch/_types/ScoreSort.java index b432f1dfd1..84a9e15649 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/_types/ScoreSort.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/_types/ScoreSort.java @@ -141,7 +141,7 @@ public ScoreSort build() { protected static void setupScoreSortDeserializer(ObjectDeserializer op) { op.add(Builder::order, SortOrder._DESERIALIZER, "order"); - + op.shortcutProperty("order"); } } diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/SortOptionsTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/SortOptionsTest.java index c7bb05ac56..8243b8b16c 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/_types/SortOptionsTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/SortOptionsTest.java @@ -33,4 +33,32 @@ public void testSortOptions() { assertEquals("entityId", fieldSort.field()); assertEquals(SortOrder.Asc, fieldSort.order()); } + + @Test + public void testScoreSortOrderShorthand() { + String jsonString = "[{\"_score\":\"asc\"}]"; + StringReader reader = new StringReader(jsonString); + JacksonJsonpMapper mapper = new JacksonJsonpMapper(); + JsonParser parser = mapper.jsonProvider().createParser(reader); + + List sortOptions = JsonpDeserializer.arrayDeserializer(SortOptions._DESERIALIZER).deserialize(parser, mapper); + assertEquals(1, sortOptions.size()); + assertEquals(SortOptions.Kind.Score, sortOptions.get(0)._kind()); + ScoreSort scoreSort = (ScoreSort) sortOptions.get(0)._get(); + assertEquals(SortOrder.Asc, scoreSort.order()); + } + + @Test + public void testDocSortOrderShorthand() { + String jsonString = "[{\"_doc\":\"desc\"}]"; + StringReader reader = new StringReader(jsonString); + JacksonJsonpMapper mapper = new JacksonJsonpMapper(); + JsonParser parser = mapper.jsonProvider().createParser(reader); + + List sortOptions = JsonpDeserializer.arrayDeserializer(SortOptions._DESERIALIZER).deserialize(parser, mapper); + assertEquals(1, sortOptions.size()); + assertEquals(SortOptions.Kind.Doc, sortOptions.get(0)._kind()); + ScoreSort scoreSort = (ScoreSort) sortOptions.get(0)._get(); + assertEquals(SortOrder.Desc, scoreSort.order()); + } }