[BUG] org.opensearch.client.util.MissingRequiredPropertyException: Missing required property 'GeoBoundsAggregate.bounds'
What is the bug?
When performing a geo bounds aggregation on a null field, the response cannot be deserialized. This is the error:
org.opensearch.client.util.MissingRequiredPropertyException: Missing required property 'GeoBoundsAggregate.bounds'
at org.opensearch.client.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:89)
at org.opensearch.client.opensearch._types.aggregations.GeoBoundsAggregate.<init>(GeoBoundsAggregate.java:57)
at org.opensearch.client.opensearch._types.aggregations.GeoBoundsAggregate.<init>(GeoBoundsAggregate.java:49)
at org.opensearch.client.opensearch._types.aggregations.GeoBoundsAggregate$Builder.build(GeoBoundsAggregate.java:126)
at org.opensearch.client.opensearch._types.aggregations.GeoBoundsAggregate$Builder.build(GeoBoundsAggregate.java:94)
at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:98)
at org.opensearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:60)
at org.opensearch.client.json.ExternallyTaggedUnion$Deserializer.deserialize(ExternallyTaggedUnion.java:94)
at org.opensearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserializeEntry(ExternallyTaggedUnion.java:136)
at org.opensearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserialize(ExternallyTaggedUnion.java:119)
at org.opensearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserialize(ExternallyTaggedUnion.java:106)
at org.opensearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:87)
at org.opensearch.client.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:81)
at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:185)
at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:146)
at org.opensearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:87)
at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:91)
at org.opensearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:55)
at org.opensearch.client.transport.endpoints.EndpointWithResponseMapperAttr$1.deserialize(EndpointWithResponseMapperAttr.java:68)
at org.opensearch.client.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:360)
at org.opensearch.client.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:326)
at org.opensearch.client.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:148)
at org.opensearch.client.opensearch.OpenSearchClient.search(OpenSearchClient.java:1381)
How can one reproduce the bug?
Configure a template mapping with a geo_point field:
"mappings": {
"properties": {
"location": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
Index a document without the geo_point field:
Map<String, String> indexData = Map.of("first_name", "Bruce");
IndexRequest<Map> indexRequest = new IndexRequest.Builder<Map>().index("index_test").id("1").document(indexData).build();
openSearchClient.index(indexRequest);
Perform a geo_bounds aggregation:
org.opensearch.client.opensearch.core.SearchResponse<Object> result = openSearchClient.search(
org.opensearch.client.opensearch.core.SearchRequest.of(s -> s.index("index_test")
.aggregations("box", b -> b.geoBounds(g -> g.field("location.coordinates")))), Object.class);
What is the expected behavior?
Deserialize the response and not throwing an exception
What is your host/environment?
Opensearch 2.15.0 org.opensearch.client:opensearch-java:2.11.1
Do you have any additional context?
Here is the aggregation part of the response from opensearch, it does not contain a "bounds" field:
"aggregations": {
"geo_bounds#box": {}
}
The bug seems similar to https://github.com/opensearch-project/opensearch-java/issues/520 but on GeoBoundsAggregate
@TatianaNeuer A fix for this has been released in version 2.16.0, could you please confirm this resolves your issue?
Thank you, I tested today with version 2.18.0 and I confirm the issue is resolved