Elasticsearch version 8.13.0edit

Also see Breaking changes in 8.13.

Known issuesedit

  • Due to a bug in the bundled JDK 22 nodes might crash abruptly under high memory pressure. We recommend downgrading to JDK 21.0.2 asap to mitigate the issue.
  • Nodes upgraded to 8.13.0 fail to load downsampling persistent tasks. This prevents them from joining the cluster, blocking its upgrade (issue: #106880)

    This affects clusters running version 8.10 or later, with an active downsampling configuration or a configuration that was activated at some point since upgrading to version 8.10 or later.

Breaking changesedit

There are no breaking changes in 8.13.0.

Notable changesedit

The following are notable, non-breaking updates to be aware of:

  • Changes to features that are in Technical Preview.
  • Changes to log formats.
  • Changes to non-public APIs.
  • Behaviour changes that repair critical bugs.

    ES|QL
  • ESQL: Grammar - FROM METADATA no longer requires [] #105221
  • ES|QL: remove PROJECT keyword from the grammar #105064
  • [ESQL] Remove is_nan, is_finite, and is_infinite #104091

    TSDB
  • Change index.look_ahead_time index setting’s default value from 2 hours to 30 minutes. #103898
  • Lower the look_ahead_time index setting’s max value from 7 days to 2 hours. #103434

Bug fixesedit

Aggregations
  • Disable parallel collection for terms aggregation with min_doc_count equals to 0 #106156
  • GlobalOrdCardinalityAggregator should use HyperLogLogPlusPlus instead of HyperLogLogPlusPlusSparse #105546
Allocation
  • Fix disk computation when initializing new shards #102879
  • Fix disk computation when initializing unassigned shards in desired balance computation #102207
Application
  • Fix Search Applications bug where deleting an alias before deleting an application intermittently caused errors #106329
  • Use search to determine if cluster contains data #103920
  • [Connector API] Bugfix: support list type in filtering advenced snippet value #105633
  • [Connector API] Fix default ordering in SyncJob list endpoint #105945
  • [Connector API] Fix serialisation of script params in connector index service #106060
Authentication
  • Execute SAML authentication on the generic threadpool #105232 (issue: #104962)
Authorization
  • Adjust interception of requests for specific shard IDs #101656
Client
  • Validate settings in ReloadSecureSettings API #103176
Data streams
  • Apm-data: fix @custom component templates #104182
  • Avoid false-positive matches on intermediate objects in ecs@mappings #105440 (issue: #102794)
  • Execute lazy rollover with an internal dedicated user #104732 #104905 (issue: #104732)
  • Fix write index resolution when an alias is pointing to a TSDS #104440 (issue: #104189)
  • x-pack/plugin/core: add match_mapping_type to ecs@mappings dynamic templates #103035
Distributed
  • Fix logger Strings.format calls #104573
  • Request indexing memory pressure in APM node metrics publisher #103520
ES|QL
  • ESQL: Add single value checks on LIKE/RLIKE pushdown #103807 (issue: #103806)
  • ESQL: Correct out-of-range filter pushdowns #99961 (issue: #99960)
  • ESQL: Fix Analyzer to not interpret escaped * as a pattern #105325 (issue: #104955)
  • ESQL: Fix a bug loading unindexed text fields #104553
  • ESQL: Fix bug in grammar that allowed spaces inside id pattern #105476 (issue: #105441)
  • ESQL: Fix replacement of nested expressions in aggs with multiple parameters #104718 (issue: #104706)
  • ESQL: Fix wrong attribute shadowing in pushdown rules #105650 (issue: #105434)
  • ESQL: Improve pushdown of certain filters #103538 (issue: #103536)
  • ESQL: allow null in date math #103610 (issue: #103085)
  • ESQL: make cidr_match foldable #105403 (issue: #105376)
  • ES|QL: Disable optimizations that rely on Expression.nullable() #105691
  • ES|QL: Improve type validation in aggs for UNSIGNED_LONG better support for VERSION #104911 (issue: #102961)
  • ES|QL: better management of exact subfields for TEXT fields #103510 (issue: #99899)
  • Fix error on sorting unsortable geo_point and cartesian_point #106351 (issue: #106007)
  • For empty mappings use a LocalRelation #105081 (issue: #104809)
  • Resume driver when failing to fetch pages #106392 (issue: #106262)
  • Review KEEP logic to prevent duplicate column names #103316
  • ProjectOperator should not retain references to released blocks #105848
Engine
  • Consider currently refreshing data in the memory usage of refresh #104122
  • Release TranslogSnapshot buffer after iteration #106398 (issue: #106390)
Health
  • Make Health API more resilient to multi-version clusters #105789 (issue: #90183)
  • Stop the periodic health logger when es is stopping #105272
ILM+SLM
  • Remove hashCode and equals from OperationModeUpdateTask #104265 (issue: #100871)
  • [ILM] Delete step deletes data stream with only one index #105772
Indices APIs
  • Fix require_alias implicit true value on presence #104099 (issue: #103945)
Infra/CLI
  • Fix server cli to always pass through exit code #104943
Infra/Core
  • Do not enable APM agent instrument, it’s not required for manual tracing #105055
  • Fix bogus assertion tripped by force-executed tasks #104581 (issue: #104580)
  • Metrics: Allow AsyncCounters to switch providers #103025
  • Metrics: Handle null observations in observers #103091
Infra/Node Lifecycle
  • Close rather than stop HttpServerTransport on shutdown #102759 (issue: #102501)
Ingest Node
  • Add stable ThreadPool constructor to LogstashInternalBridge #105163
  • Adding executedPipelines to the IngestDocument copy constructor #105427
  • Revert "x-pack/plugin/apm-data: download geoip DB on pipeline creation" #104505
  • X-pack/plugin/apm-data: fix @custom pipeline support #104113
Machine Learning
  • Allow GET inference models by user a with read only permission #105346
  • Avoid computing currentInferenceProcessors on every cluster state #106057
  • Catch all the potential exceptions in the ingest processor code #105391
  • Changed system auditor to use levels #105429
  • During ML maintenance, reset jobs in the reset state without a corresponding task #106062
  • Fix categorize_text aggregation nested under empty buckets #105987 (issue: #105836)
  • Fix resetting a job if the original reset task no longer exists. #106020
  • Retry updates to model snapshot ID on job config #104077
  • The OpenAI model parameter should be in service settings not task settings. Move the configuration field to service settings #105458
  • Undeploy elser when inference model deleted #104230
Mapping
  • Fix parsing of flattened fields within subobjects: false #105373
Network
  • Fix use-after-free at event-loop shutdown #105486
Search
  • Correct profiled rewrite time for knn with a pre-filter #104150
  • Force execution of SearchService.Reaper #106544 (issue: #106543)
  • Move TransportTermsEnumAction coordination off transport threads #104408
  • Remove SearchException usages without a proper status code #105150
  • Require the name field for inner_hits for collapse #104666
  • add validation on _id field when upsert new doc #103399 (issue: #102981)
Security
  • Revert "Validate settings in ReloadSecureSettings API" #103310
Snapshot/Restore
  • Do not record s3 http request time when it is not available #105103
  • URLRepository should not block shutdown #105588
TLS
  • Respect --pass option in certutil csr mode #106105
Transform
  • Fix _reset API when called with force=true on a failed transform #106574 (issue: #106573)
  • Fix a bug where destination index aliases are not set up for an unattended transform #105499
  • Remove duplicate checkpoint audits #105164 (issue: #105106)
  • Return results in order #105089 (issue: #104847)
  • Use deduced mappings for determining proper fields' format even if deduce_mappings==false #103682 (issue: #103115)
Vector Search
  • Fix bug when nested knn pre-filter might match nested docs #105994
Watcher

Deprecationsedit

Distributed
  • DesiredNode: deprecate node_version field and make it optional (unused) in current parser #104209
Infra/Core

Enhancementsedit

Aggregations
  • Add index mapping parameter for counted_keyword #103646
  • Introduce an AggregatorReducer to reduce the footprint of aggregations in the coordinating node #105207
  • Release resources in BestBucketsDeferringCollector earlier #104893
  • Support sampling in counted_terms aggregation #103846
Allocation
  • Account for reserved disk size #103903
  • Derive expected replica size from primary #102078
Application
  • Add serverless scopes for Connector APIs #104063
  • [Connector API] Change required privileges to indices:data/read(write) #105289
  • [Connector API] Implement update index_name action #104648
  • [Connector API] Support filtering by name, index name in list action #105131
  • [Connector API] Support filtering connectors by service type and a query #105178
  • [Connector API] Support updating configuration values only #105249
  • [Connectors API] Add new field api_key_secret_id to Connector #104982
  • [Connectors API] Implement connector status update action #104750
  • [Connectors API] Implement update native action endpoint #104654
  • [Connectors API] Implement update service type action #104643
  • [Connectors API] Relax strict response parsing for get/list operations #104909
  • [Profiling] Extract properties faster from source #104356
  • [Profiling] Mark all templates as managed #103783
  • [Profiling] Speed up processing of stacktraces #104674
  • [Profiling] Support downsampling of generic events #104730
  • [Profiling] Use shard request cache consistently #103643
Authentication
  • Expose API key authentication metrics #103178
  • Expose realms authentication metrics #104200
  • Expose service account authentication metrics #104043
  • Expose token authentication metrics #104142
  • Hot-reloadable LDAP bind password #104320
  • Support of match for the Query API Key API #104594
Authorization
  • [Security Solution] Allow write permission for kibana_system role on endpoint response index #103555
CRUD
  • Avoid wrapping searchers multiple times in mget #104227 (issue: #85069)
Client
  • Add rest spec for Query User API #104529
Cluster Coordination
  • Add troubleshooting docs link to PeerFinder logs #104787
  • Report current master in PeerFinder #104396
Data streams
  • Introduce lazy rollover for mapping updates in data streams #103309 (issue: #89346)
  • Use new ignore_dynamic_beyond_limit in logs and metric data streams #105180
  • X-pack/plugin/apm-data: add dynamic setting for enabling template registry #104386 (issue: #104385)
  • X-pack/plugin/core: rename double_metrics template #103033
  • x-pack/plugin/apm-data: Add a new field transaction.profiler_stack_trace_ids to traces-apm@mappings.yaml #105223
  • x-pack/plugin/apm-data: Map some APM fields as flattened and fix error.grouping_name script #103032
  • x-pack/plugin/core: make automatic rollovers lazy #105273 (issue: #104083)
Discovery-Plugins
Downsampling
  • Support patch transport version from 8.12 #104406
ES|QL
  • Add ES|QL async delete API #103628
  • Avoid humongous blocks #103340
  • ESQL: Add TO_UPPER and TO_LOWER functions #104309
  • ESQL: Add option to drop null fields #102428
  • ESQL: Add plan consistency verification after each optimizer #105371
  • ESQL: Check field exists before load from _source #103632
  • ESQL: Delay finding field load infrastructure #103821
  • ESQL: Expand shallow copy with vecs #103681 (issue: #100528)
  • ESQL: Extend STATS command to support aggregate expressions #104958
  • ESQL: Infer not null for aggregated fields #103673 (issue: #102787)
  • ESQL: Nested expressions inside stats command #104387 (issue: #99828)
  • ESQL: Pre-allocate rows in TopNOperator #104796
  • ESQL: Referencing expressions that contain backticks requires escaping those backticks. #100740 (issue: #100312)
  • ESQL: Simpify IS NULL/IS NOT NULL evaluation #103099 (issue: #103097)
  • ESQL: Speed up reading many nulls #105088
  • ESQL: Support loading shapes from source into WKB blocks #104269
  • ESQL: Track the rest of DocVector #103727
  • ESQL: MV_FIRST and MV_LAST #103928
  • ESQL: add date_diff function #104118 (issue: #101942)
  • ESQL: push down "[text_field] is not null" #105593
  • ES|QL Async Query API #103398
  • Prepare enrich plan to support multi clusters #104355
  • Reading points from source to reduce precision loss #103698
  • Remove deprecated Block APIs #103592
  • Reserve bytes before serializing page #105269
  • Support ST_CENTROID over spatial points #104218 (issue: #104656)
  • Support cross clusters query in ESQL #101640
  • Support enrich ANY mode in cross clusters query #104840
  • Support enrich coordinator mode #104936
  • Support enrich remote mode #104993
Geo
  • Add support for Well Known Binary (WKB) in the fields API for spatial fields #103461
  • Add the possibility to transform WKT to WKB directly #104030
Health
  • Add APM metrics to HealthPeriodicLogger #102765
  • Extend repository_integrity health indicator for unknown and invalid repos #104614 (issue: #103784)
ILM+SLM
  • Add "step":"ERROR" to ILM explain response for missing policy #103720 (issue: #99030)
  • Add default rollover conditions to ILM explain API response #104721 (issue: #103395)
  • ILM/SLM history policies forcemerge in hot and dsl configuration #103190
Infra/CLI
  • Add replay diagnostic dir to system jvm options #103535
Infra/Circuit Breakers
  • Lower G1 minimum full GC interval #105259
Infra/Core
  • Adding threadpool metrics #102371
  • ES - document observing with rejections #104859
  • Thread pool metrics #104500
Infra/Metrics
  • Modify name of threadpool metric for rejected #105015
Infra/Node Lifecycle
  • Wait for async searches to finish when shutting down #101487
Infra/Transport API
  • Make ParentTaskAssigningClient.getRemoteClusterClient method also return ParentTaskAssigningClient #100813
Ingest Node
  • Adding ActionRequestLazyBuilder implementation of RequestBuilder #104927
  • Adding a RequestBuilder interface #104778
  • Adding a custom exception for problems with the graph of pipelines to be applied to a document #105196
  • Improving the performance of the ingest simulate verbose API #105265
  • Ingest geoip processor cache no results from the database #104092
  • Limiting the number of nested pipelines that can be executed #105428
  • Modifying request builders #104636
Java Low Level REST Client
  • Set thread name used by REST client #103160
Machine Learning
  • Add optional pruning configuration (weighted terms scoring) to text expansion query #102862
  • Add text_embedding inference service with multilingual-e5 and custom eland models #104949
  • Add 3 automatic restarts for pytorch_inference processes that stop unexpectedly #104433
  • Add support for Cohere inference service #104559
  • Always test for spikes and dips as well as changes in the change point aggregation #103922
  • Automatically download the ELSER model when PUT in _inference #104334
  • Better handling of number of allocations in pytorch_inference in the case that hardware_concurrency fails #2607
  • Change detection aggregation improvements #102824
  • Conditionally send the dimensions field as part of the openai requests #105299 (issue: #105005)
  • Endpoint to find positions of Grok pattern matches #104394
  • Ensure unique IDs between inference models and trained model deployments #103996
  • Expose some ML metrics via APM #102584
  • Make task_type optional in _inference APIs #104483
  • Update missingTrainedModel message to include: you may need to create it #104155
  • Upgrade MKL to version 2024.0 on Linux x86_64 #2619
  • Upgrade PyTorch to version 2.1.2. #2588
  • Upgrade zlib to version 1.2.13 on Windows #2588
  • Use Boost.JSON for JSON processing #2614
  • Validate inference model ids #103669
Mapping
  • Add index.mapping.total_fields.ignore_dynamic_beyond_limit setting to ignore dynamic fields when field limit is reached #96235
  • Make field limit more predictable #102885
Network
  • Prune unnecessary information from TransportNodesStatsAction.NodeStatsRequest #102559 (issue: #100878)
Percolator
Query Languages
  • Introduce Alias.unwrap method #104575
Search
  • Dyamically adjust node metrics cache expire #104460
  • Enhancement: Metrics for Search Took Times using Action Listeners #104996
  • Field caps performance pt2 #105941
  • Field-caps field has value lookup use map instead of looping array #105770
  • Flag in _field_caps to return only fields with values in index #103651
  • Include better output in profiling & toString for automaton based queries #105468
  • Metrics for search latencies #102557
  • Ref count search response bytes #103763 (issue: #102657)
  • Remove leniency in msearch parsing #103232
  • Resolve Cluster API #102726
  • Reuse number field mapper tests in other modules #99142 (issue: #92947)
  • S3 first byte latency metric #102435
  • Update s3 latency metric to use micros #103633
  • Upgrade to Lucene 9.10.0 #105578
Security
  • Add Query Users API #104033
  • Add ApiKey expiration time to audit log #103959
  • Add expiration time to update api key api #103453
  • Add stricter validation for api key expiration time #103973
  • Add support for the simple_query_string to the Query API Key API #104132
  • Add support for the type parameter, for sorting, to the Query API Key API #104625
  • Aggs support for Query API Key Information API #104895
  • Hot-reloadable remote cluster credentials #102798
Snapshot/Restore
Store
  • List hidden shard stores by default #103710
TLS
  • elasticsearch-certutil cert now verifies the issuing chain of the generated certificate #103948
TSDB
  • Improve storage efficiency for non-metric fields in TSDB #99747
  • Introduce experimental pass-through field type #103648
  • Nest pass-through objects within objects #105062
  • Restrict usage of certain aggregations when in sort order execution is required #104665
  • Small time series agg improvement #106288
Transform
  • Allow transforms to use PIT with remote clusters again #105192 (issue: #104518)
  • Transforms: Adding basic stats API param #104878
Vector Search
  • Add new int8_flat and flat vector index types #104872
  • Add support for more than one inner_hit when searching nested vectors #104006
  • Making k and num_candidates optional for knn search #101209 (issue: #97533)

New featuresedit

Data streams
  • Add require_data_stream parameter to indexing requests to enforce indexing operations target a data stream #101872 (issue: #97032)
  • Redirect failed ingest node operations to a failure store when available #103481
ES|QL
  • ESQL: Introduce mode setting for ENRICH #103949
  • ESQL: add =~ operator (case insensitive equality) #103656
Health
  • Create a DSL health indicator as part of the health API #103130
Infra/Core
  • Add gradle tasks and code to modify and access mappings between version ids and release versions #103627
Mapping
Search
  • Added Duplicate Word Check Feature to Analysis Nori #103325 (issue: #103321)
  • [Synonyms] Mark Synonyms as GA #103223

Upgradesedit

Query Languages
Search