Description
SQL/EQL is an internal user of Elasticsearch and a query request is translated in a _search
request on the receiving node, then sent via transport to the other nodes in the cluster. Depending on the version of the node receiving the request, the way the query dsl will look like can differ. With the introduction of the "fields" API, the query dsl will stop using docvalue_fields and _source filtering in favor of "fields" and simplify the overall response handling logic.
In a mixed versions cluster where several nodes are on the old version (where "fields" API doesn't exist) and others are on the new one the search request on those nodes will look differently, as well as the response coming back from ES. In this scenario a client (internal - SQL -, or external) will potentially have to deal with an array of response formats, which adds tremendous complexity to code base in *QL's case and be impossible to adopt the new API.
Some open questions to consider:
- should this behavior be acceptable and users aware of these edge cases in a rolling upgrade scenario?
- should this mixed versions support be a must and ES do a best effort to adapt various response formats to a common one?