Skip to content

Handling new APIs in a mixed versions cluster #63304

Closed
@astefan

Description

@astefan

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    :Search/SearchSearch-related issues that do not fall into other categoriesTeam:SearchMeta label for search team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions