Backwards compatibility and composite aggregation "missing bucket"

I have an Elasticsearch cluster that is currently on version 6.3.2 and we are not yet ready to upgrade it (hopefully that comes soon!).

According the ES documentation, I should be able to use the Java clients from newer versions as long as I'm on the same major version:

The client must have the same major version (e.g. 2.x , or 5.x ) as the nodes in the cluster. Clients may connect to clusters which have a different minor version (e.g. 2.3.x ) but it is possible that new functionality may not be supported. Ideally, the client should have the same version as the cluster.

For a variety of reasons, my client code is currently using version 6.6.2 of the REST high-level client. Since both client and cluster share the major version of 6.x, I would expect things to work so long as my client doesn't try to use any functionality that is newer than 6.3.2. If I am misinterpreting the above statement on version compatibility, please let me know.

Unfortunately, I am not finding these versions to be compatible when I introduce the use of a composite aggregation. The client code is inserting a "missing_bucket": false entry into the composite aggregation sources. I believe that the missing bucket feature was only added in Elasticsearch 6.4, and my 6.3.2 cluster is rejecting it with the error:

org.elasticsearch.ElasticsearchException: Elasticsearch exception [type=illegal_argument_exception, reason=[date_histogram] unknown field [missing_bucket], parser not found]

Is this a violation of the above-referenced client compatibility policy? What are my options for best working around this? Do I need to change all of my client code back to use 6.3 until I can get a full upgrade of the cluster planned? Are there other workarounds I can consider in the meantime?

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.