Elasticsearch version 8.10.0
Elasticsearch version 8.10.0
Also see Breaking changes in 8.10.
Known issues
Snapshot-based downgrades
The snapshot repository format changed in a manner that prevents earlier versions of Elasticsearch from reading the repository contents if it contains snapshots from this version and the last cluster to write to this repository was in the 8.10 series. This will prevent you from reverting an upgrade to the 8.10 series by restoring a snapshot taken before the upgrade.
Snapshot repositories written by clusters running versions 8.11.0 and later are compatible with all earlier versions. Moreover, clusters running version 8.11.0 or later will also automatically repair the repository format the first time they write to the repository to take or delete a snapshot, making it so that all earlier versions can read its contents again.
If you wish to downgrade to a version prior to 8.9.0, take or delete a snapshot using a cluster running version 8.11.0 or later to repair the repository format first. If you cannot repair the repository in this way, first delete all the snapshots in the repository taken with version 8.9.0 or later. To do this will require using a cluster running version 8.10.0 or later.
If you wish to downgrade to a version in the 8.9 series, you must take or delete a snapshot using a cluster running version 8.11.0 or later to repair the repository format first. If you cannot repair the repository in this way, first delete all the snapshots in the repository taken with version 8.10.0 or later using a cluster running version 8.10.4.
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.
Breaking changes
Analysis
- Change pre-configured and cached analyzer components to use IndexVersion instead of Version #97319
Geo
- Remove the unused executor builder for vector tile plugin #96577
Bug fixes
Aggregations
- Cardinality nested in time series doc values bug #99007
- Skip segment for
MatchNoDocsQuery
filters #98295 (issue: #94637)
Allocation
Application
- [Profiling] Abort index creation on outdated index #98864
- [Profiling] Consider static settings in status #97890
- [Profiling] Mark executables without a name #98884
CRUD
- Add missing sync on
indicesThatCannotBeCreated
#97869
Cluster Coordination
- Fix cluster bootstrap warning for single-node discovery #96895 (issue: #96874)
- Fix election scheduling after discovery outage #98420
- Improve reliability of elections with message delays #98354 (issue: #97909)
- Make
TransportAddVotingConfigExclusionsAction
retryable #98386 - Release master service task on timeout #97711
Data streams
- Avoid lifecycle NPE in the data stream lifecycle usage API #98260
Distributed
- Avoid
transport_worker
thread inTransportBroadcastAction
#98001 - Avoid
transport_worker
thread inTransportBroadcastByNodeAction
#97920 (issue: #97914) - Fork response reading in
TransportNodesAction
#97899
Downsampling
- Copy “index.lifecycle.name” for ILM managed indices #97110 (issue: #96732)
- Downsampling: copy the
_tier_preference
setting #96982 (issue: #96733)
EQL
Geo
- Fix how Maps#flatten handle map values inside a list #98828
- Fix mvt error when returning partial results #98765 (issue: #98730)
Health
_health_report
SLM indicator should use the policy ID (not the name) #99111
Indices APIs
- Ensure frozen indices have correct tier preference #97967
Infra/REST API
- Fix possible NPE when transportversion is null in
MainResponse
#97203
Ingest Node
- Revert “Add mappings for enrich fields” #98683
Machine Learning
- Avoid risk of OOM in datafeeds when memory is constrained #98324 (issue: #89769)
- Detect infinite loop in the WordPiece tokenizer #98206
- Fix to stop aggregatable subobjects from being considered multi-fields, to support
"subobjects": false
in data frame analytics #97705 (issue: #88605) - Fix weird
change_point
bug where all data values are equivalent #97588 - The model loading service should not notify listeners in a sync block #97142
Mapping
Network
- Fork remote-cluster response handling #97922
Search
- Fork CCS remote-cluster responses #98124 (issue: #97997)
- Fork CCS search-shards handling #98209
- Improve test coverage for CCS search cancellation and fix response bugs #97029
- Make
terminate_after
early termination friendly #97540 (issue: #97269) - Track
max_score
in collapse when requested #97703 (issue: #97653)
Security
- Fix NPE when
GetUser
with profile uid before profile index exists #98961
Snapshot/Restore
- Fix
BlobCacheBufferedIndexInput
large read after clone #98970
TSDB
- Mapped field types searchable with doc values #97724
Transform
Watcher
- Changing watcher to disable cookies in shared http client #97591
Deprecations
Authorization
- Mark
apm_user
for removal in a future major release #87674
Enhancements
Aggregations
- Improve error message when aggregation doesn’t support counter field #93545
- Set default index mode for
TimeSeries
tonull
#98808 (issue: #97429)
Allocation
- Add
node.roles
to cat allocation API #96994
Application
Authentication
- Avoid double get #98067 (issue: #97928)
- Give all acces to .slo-observability.* indice to kibana user #97539
- Refresh tokens without search #97395
Authorization
- Add “operator” field to authenticate response #97234
- Read operator privs enabled from Env settings #98246
- [Fleet] Allow
kibana_system
to put datastream lifecycle #97732
Data streams
- Install data stream template for Kibana reporting #97765
Downsampling
- Change
MetricFieldProducer#metrics
field type from list to array #97344 - Improve iterating over many field producers during downsample operation #97281
- Run downsampling using persistent tasks #97557 (issue: #93582)
EQL
- EQL to use only the necessary fields in the internal
field_caps
calls #98987
Engine
Health
- Adding special logic to the disk health check for search-only nodes #98508
- Health API Periodic Logging #96772
ILM+SLM
- Separating SLM from ILM #98184
Infra/Core
- Infrastructure to report upon document parsing #97961
Infra/Node Lifecycle
Infra/Plugins
- Adding
ApiFilteringActionFilter
#97985
Infra/REST API
Infra/Settings
- Mark customer settings for serverless #98051
Ingest Node
- Allow custom geo ip database files to be downloaded #97850
Network
- Add request header size limit for RCS transport connections #98692
Search
- Add
completion_time
time field toasync_search
get and status response #97700 (issue: #88640) - Add setting for search parallelism #98455
- Add support for concurrent collection when size is greater than zero #98425
- Cross-cluster search provides details about search on each cluster #97731
- Enable parallel collection in Dfs phase #97416
- Exclude clusters from a cross-cluster search #97865
- Improve MatchNoDocsQuery description #96069 (issue: #95741)
- Improve exists query rewrite #97159
- Improve match query rewrite #97208
- Improve prefix query rewrite #97209
- Improve wildcard query and terms query rewrite #97594
- Introduce Synonyms Management API used for synonym and synonym_graph filters #97962 (issue: #38523)
- Introduce a collector manager for
PartialHitCountCollector
#97550 - Introduce a collector manager for
QueryPhaseCollector
#97410 - Limit
_terms_enum
prefix size #97488 (issue: #96572) - Support minimum_should_match field for terms_set query #96082
- Support type for simple query string #96717
- Unwrap IOException in
ContextIndexSearcher
concurrent code-path #98459 - Use a collector manager in DfsPhase Knn Search #96689
- Use the Weight#matches mode for highlighting by default #96068
- Wire
QueryPhaseCollectorManager
into the query phase #97726 - Wire concurrent top docs collector managers when size is 0 #97755
ProfileCollectorManager
to support child profile collectors #97387- cleanup some code NoriTokenizerFactory and KuromojiTokenizerFactory #92574
Security
- Add an API for managing the settings of Security system indices #97630
- Support getting active-only API keys via Get API keys API #98259 (issue: #97995)
Snapshot/Restore
- Add Setting to optionally use mmap for shared cache IO #97581
- Collect additional object store stats for S3 #98083
- HDFS plugin add replication_factor param #94132
Store
- Allow Lucene directory implementations to estimate their size #97822
- Allow
ByteSizeDirectory
to expose their data set sizes #98085
TSDB
- Add tsdb metrics builtin component template #97602
- Include more downsampling status statistics #96930 (issue: #96760)
TimeSeriesIndexSearcher
to offload to the provided executor #98414
Transform
- Support boxplot aggregation in transform #96515
New features
Application
- Enable Query Rules as technical preview #97466
- [Enterprise Search] Add connectors indices and ent-search pipeline #97463
Data streams
- Introduce downsampling configuration for data stream lifecycle #97041
Search
- Introduce executor for concurrent search #98204
Security
- Beta release for API key based cross-cluster access #98307
Upgrades
Network
- Upgrade Netty to 4.1.94.Final #97040