Elasticsearch version 8.9.1edit

Also see Breaking changes in 8.9.

Known issuesedit

  • High Memory Pressure due to a GC JVM setting change

    This version of Elasticsearch is bundled with JDK 20. In JDK 20 Preventive GC is disabled by default. This may lead to increased memory pressure and an increased number of CircuitBreakerExceptions when retrieving large documents under some load patterns. (issue: #99592)

    If this change affects your use of Elasticsearch, consider re-enabling the previous behaviour by adding the JVM arguments -XX:+UnlockDiagnosticVMOptions -XX:+G1UsePreventiveGC (reference: JDK 20 release notes). It is important to note that this workaround is temporary and works only with JDK 20, which is bundled with Elasticsearch up to version 8.10.2 inclusive. Successive versions are bundling JDK 21+, where this setting has been removed. Specifying those JVM arguments will prevent the JVM (and therefore Elasticsearch Nodes) from starting.

Bug fixesedit

  • GlobalAggregator should call rewrite() before createWeight() #98091 (issue: #98076)
Cluster Coordination
  • Improve exception handling in Coordinator#publish #97840 (issue: #97798)
  • Backport fix for async missing events and re-enable the feature #98130
  • Ignore the total_shards_per_node setting on searchable snapshots in frozen #97979
  • Migrate to data tiers routing configures correct default for mounted indices #97936 (issue: #97898)
  • Fix APM trace start time #98113
  • Add Configuration to PatternLayout #97679
Machine Learning
  • Fix failure processing Question Answering model output where the input has been spanned over multiple sequences #98167 (issue: #97917)
  • UnmappedFieldFetcher should ignore nested fields #97987 (issue: #97684)


  • Upgrade xmlsec to 2.1.8 #97741
  • Enhance regex performance with duplicate wildcards #98176
Machine Learning
  • Add setting to scale the processor count used in the model assignment planner #98296
  • Refactor nested field handling in FieldFetcher #97683