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:
What is the bug?
When performing a geo bounds aggregation on a null field, the response cannot be deserialized. This is the error:
How can one reproduce the bug?
Configure a template mapping with a geo_point field:
Index a document without the geo_point field:
Perform a geo_bounds aggregation:
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:
The bug seems similar to https://github.com/opensearch-project/opensearch-java/issues/520 but on GeoBoundsAggregate