Release notes

9.4.5-40.0

Bug Fixes

  • Fixed a bug in AQP with nested joins when a child join was pruned by the planner.

  • Fixed a bug in multi-conditional index join swapping when the parent data was empty.

  • Fixed a regression in Searchguard FLX when calculating the index fingerprint.

  • Fixed failures in join queries with match queries on semantic_text fields.

  • Fixed a stack overflow in the graph API when a path pattern led to an unreachable entity.

  • Fixed a stack overflow when processing graph queries with two patterns.

  • Fixed inner-join strategy when the root var is not the first node pattern.

  • Fixed an issue on join strategy selection for graph requests.

  • Fixed an ArrayIndexOutOfBoundsException in INDEX_JOIN strategy when joining on numeric fields.

  • Fixed an issue where the msearch request ignored the preference parameter when at least one sub-request contained a join.

  • Fixed an issue where the preference parameter contained a non-existent shard id, causing the request to fail instead of returning an empty response.

  • Fixed rolling-upgrade serialization in broadcast requests.

  • Fixed an issue with query name and boost handling in KNN queries.

  • Fixed a race condition in search locks for graph requests.

  • Fixed a race condition in the data store.

  • Fixed root selection in graph requests when the Jordan Center strategy could not find a center.

  • Fixed label-combination exploration while backtracking in graph pattern matching.

  • Fixed a race condition between task resource release and job allocator cleanup.

  • Fixed scoring inconsistencies in dis_max queries when min_score was used with tie_breaker.

  • Fixed a bug in unary-expression hashing that could cause incorrect cached plan reuse for equivalent-looking queries.

Features

  • Added support for LIMIT clause in graph API queries.

  • Added ANY direction in edge patterns in graph API queries.

  • Added support for disjunction of labels in graph API queries.

  • Added support for disjunctions in path patterns.

  • Added support for early termination in AQP so tasks can complete as soon as downstream evaluation proves there are no results.

  • Added support for task cancellation in graph requests.

  • Added node labels to the default vertex output.

  • Added support for element property specifications in graph requests.

  • Added a new graph execution pipeline that improved scalability and provided a stronger foundation for future graph features.

Enhancements

  • Upgraded to Elasticsearch 9.4.5

  • Improved the performance of the graph API during label expansion.

  • Improved performance on multi-condition index join when using EQ operator on keyword fields.

  • Improved graph result-fetch performance by removing the use of named queries.

  • Improved memory usage in the graph API when rendering final results.

  • Improved the memory settings documentation section.

  • Improved data lifecycle by borrowing vector container per tasks.

  • Improved the search-lock lifecycle for graph requests.

  • Added cancel-aware graph expansion handling so resources are released as soon as they are no longer required.

  • Added graph-pattern pruning to skip zero-result branches earlier, reducing unnecessary processing.

  • Added a fail-fast approach when the data model was not available.

  • Added job throttling for graph API requests to limit resource overuse.

  • Improved the cost optimizer for KNN requests by using KNN queries during cardinality estimation.

  • Improved creation of table rows with a streaming Cartesian Product computation.

  • Updated Apache Arrow to version 18.3.0.

  • Updated Apache Calcite to version 1.42.

  • Improved code stability by removing reflection on Elasticsearch internal API.

  • Added a documentation example of runtime fields accessing nested fields.

  • Clarified the license requirements for the graph API in the documentation.