Release notes



  • Upgraded to Elasticsearch 8.12.2

  • Improved the circuit-breaker mechanism for multi-conditional index joins. The circuit-breaker now triggers a failure when the limit of index lookup operations is exceeded at run-time, rather than relying on estimations done at the query planning phase.

  • Enhanced the failure message of the circuit-breaker mechanism for multi-conditional index joins, incorporating details on the reached limit and the count of remaining lookup operations.

  • Introduced an option to deactivate the circuit-breaker mechanism for multi-conditional index joins. This can be achieved by setting -1 in the federate.planner.index_join.max_lookups configuration setting.

Bug fixes

  • Fixed a bug concerning missing bounds and multi-value columns.



  • Introduced an allow_missing_bound parameter in the lt, lte, gt, and gte operators to accept a missing or null value in a field used in the join.


  • Upgraded to Elasticsearch 8.12.1

  • Added the truncation trace in search requests executed with the adaptive query planner.

  • Improved the performance of the within operator by doing a merge overlap optimization.

  • Implemented a pre-filtering technique in spatial joins to reduce unnecessary index lookup operations.

  • Enhanced the data type compatibility check for fields used in a join.

  • Introduced a new resource management layer in the adaptive query planner.

  • Improved the performance of the index fingerprint computation.

  • Removed the community license. An empty license is returned if no license is registered.

  • Added the planner time, execution time, and waiting time in the JSON response.

  • Improved the examples using aggregation in the user documentation.

  • Upgraded to Guava 32.1.3.

  • Upgraded to Java 21.

Bug fixes

  • Fixed a class cast exception from occurring when projecting fields in a multi-conditional index join.

  • Fixed an issue that created a stage node for a cached join in the adaptive query planner.

  • Fixed a parsing error message when using an object instead of an array for the indices join query clause.

  • Fixed an issue with the creation of function_score queries when the boost_mode parameter isn’t passed explicitly.

  • Fixed an incomplete response when doing an aggregation and no index could match the request due to a date range filter.

  • Fixed an issue on cache key definition when runtime fields were defined at query time.

  • Fixed an issue on a cached join when its parent was shared by two other parents.

  • Fixed an issue when computing the index scan cost, where the field existed but without terms in a segment.

  • Fixed a concurrency issue in multi-conditional index joins.

  • Fixed a concurrency issue in Point-In-Time query shard cache.

  • Fixed a concurrency issue in AQP reports.


  • Normalized Federate settings. The following planner settings have been marked as deprecated, a new setting is proposed;

    • siren.planner.pool.job.size has been deprecated, use federate.planner.pool.job.size instead.

    • siren.planner.pool.job.queue_size has been deprecated, use federate.planner.pool.job.queue_size instead.

    • siren.planner.pool.tasks_per_job.size has been deprecated, use federate.planner.pool.tasks_per_job.size instead.

    • siren.planner.index_join.max_lookups has been deprecated, use federate.planner.index_join.max_lookups instead.

    • siren.planner.volcano.cache.enable has been deprecated, use federate.planner.optimizer.cache.enable instead.

    • siren.planner.field.metadata.cache.maximum_size has been deprecated, use federate.planner.field.metadata.cache.maximum_size instead.

    • siren.planner.volcano.cache.maximum_size has been deprecated, use federate.planner.optimizer.cache.maximum_size instead.

    • siren.planner.volcano.cache.refresh_interval has been deprecated, use federate.planner.optimizer.cache.refresh_interval instead.