diff --git a/server/src/internalClusterTest/java/org/opensearch/search/sort/FieldSortIT.java b/server/src/internalClusterTest/java/org/opensearch/search/sort/FieldSortIT.java index 976f128a7976d..fdb12639c65be 100644 --- a/server/src/internalClusterTest/java/org/opensearch/search/sort/FieldSortIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/search/sort/FieldSortIT.java @@ -1080,11 +1080,7 @@ public void testSortMissingNumbers() throws Exception { SearchRequestBuilder searchRequestBuilder = client().prepareSearch() .setQuery(matchAllQuery()) .addSort(SortBuilders.fieldSort("u_value").order(SortOrder.ASC).missing(randomBoolean() ? -1 : "-1")); - assertFailures( - searchRequestBuilder, - RestStatus.BAD_REQUEST, - containsString("missing value of type [unsigned_long] must not be negative") - ); + assertFailures(searchRequestBuilder, RestStatus.BAD_REQUEST, containsString("Value [-1] is out of range for an unsigned long")); } public void testSortMissingNumbersMinMax() throws Exception { diff --git a/server/src/main/java/org/opensearch/index/fielddata/fieldcomparator/UnsignedLongValuesComparatorSource.java b/server/src/main/java/org/opensearch/index/fielddata/fieldcomparator/UnsignedLongValuesComparatorSource.java index 0aa137c871391..9db5817450cd0 100644 --- a/server/src/main/java/org/opensearch/index/fielddata/fieldcomparator/UnsignedLongValuesComparatorSource.java +++ b/server/src/main/java/org/opensearch/index/fielddata/fieldcomparator/UnsignedLongValuesComparatorSource.java @@ -81,15 +81,11 @@ public Object missingObject(Object missingValue, boolean reversed) { return min ? Numbers.MIN_UNSIGNED_LONG_VALUE : Numbers.MAX_UNSIGNED_LONG_VALUE; } else { if (missingValue instanceof Number) { - long ul = ((Number) missingValue).longValue(); - if (ul < 0) { - throw new IllegalArgumentException("missing value of type [unsigned_long] must not be negative"); - } - return BigInteger.valueOf(ul); + return Numbers.toUnsignedLongExact((Number) missingValue); } else { BigInteger missing = new BigInteger(missingValue.toString()); if (missing.signum() < 0) { - throw new IllegalArgumentException("missing value of type [unsigned_long] must not be negative"); + throw new IllegalArgumentException("Value [" + missingValue + "] is out of range for an unsigned long"); } return missing; }