Elasticsearch version 8.18.0
editElasticsearch version 8.18.0
editAlso see Breaking changes in 8.18.
Breaking changes
editBug fixes
edit- Analysis
- Authentication
-
- Fix NPE for missing Content Type header in OIDC Authenticator #126191
- CAT APIs
-
- Fix cat_component_templates documentation #120487
- Data streams
-
-
Avoid updating settings version in
MetadataMigrateToDataStreamService
when settings have not changed #118704 - Ensure removal of index blocks does not leave key with null value #122246
- Match dot prefix of migrated DS backing index with the source index #120042
- Refresh source index before reindexing data stream index #120752 (issue: #120314)
-
Updating
TransportRolloverAction.checkBlock
so that non-write-index blocks do not prevent data stream rollover #122905 -
ReindexDataStreamIndex
bug in assertion caused by reference equality #121325
-
Avoid updating settings version in
- Downsampling
- EQL
-
- Fix EQL double invoking listener #124918
- ES|QL
-
- Avoid over collecting in Limit or Lucene Operator #123296
- Correct line and column numbers of missing named parameters #120852
- Drop null columns in text formats #117643 (issue: #116848)
- ES|QL - date nanos range bug? #125345 (issue: #125439)
- ES|QL - Fix lucene push down behavior when a range contains nanos and millis #125595
- Fix ROUND() with unsigned longs throwing in some edge cases #119536
- Fix TopN row size estimate #119476 (issue: #106956)
-
Fix
AbstractShapeGeometryFieldMapperTests
#119265 (issue: #119201) -
Fix
ReplaceMissingFieldsWithNull
#125764 (issues: #126036, #121754, #126030) - Fix a bug in TOP #121552
- Fix async stop sometimes not properly collecting result #121843 (issue: #121249)
- Fix attribute set equals #118823
- Fix double lookup failure on ES|QL #115616 (issue: #111398)
- Fix queries with document level security on lookup indexes #120617 (issue: #120509)
-
Fix usage of already released null block in
ValueSourceReaderOperator
#126411 (issue: #125850) - Fix writing for LOOKUP status #119296 (issue: #119086)
- Implicit numeric casting for CASE/GREATEST/LEAST #122601 (issue: #121890)
- Lazy collection copying during node transform #124424
-
Limit memory usage of
fold
#118602 - Limit size of query #117898
-
Make
numberOfChannels
consistent with layout map by removing duplicatedChannelSet
#125636 - Reduce iteration complexity for plan traversal #123427
- Remove redundant sorts from execution plan #121156
- Use a must boolean statement when pushing down to Lucene when scoring is also needed #124001 (issue: #123967)
- Health
-
-
Do not recommend increasing
max_shards_per_node
#120458
-
Do not recommend increasing
- ILM+SLM
-
- Add missing timeouts to rest-api-spec SLM APIs #119447
- Indices APIs
-
- Fix NPE in rolling over unknown target and return 404 #125352
-
Include hidden indices in
DeprecationInfoAction
#118035 (issue: #118020) -
Preventing
ConcurrentModificationException
when updating settings for more than one index #126077 - Updates the deprecation info API to not warn about system indices and data streams #122951
- Avoid hoarding cluster state references during rollover #124266
- Inference
-
- [Inference API] Put back legacy EIS URL setting #121207
- Infra/Core
-
- Epoch Millis Rounding Down and Not Up 2 #118353
- Fix system data streams to be restorable from a snapshot #124651 (issue: #89261)
- Have create index return a bad request on poor formatting #123761
- Include data streams when converting an existing resource to a system resource #121392
- System Index Migration Failure Results in a Non-Recoverable State #122326
- System data streams are not being upgraded in the feature migration API #123926
- Wrap jackson exception on malformed json string #114445 (issue: #114142)
- Infra/Logging
-
-
Move
SlowLogFieldProvider
instantiation to node construction #117949
-
Move
- Infra/Plugins
- Ingest Node
- Machine Learning
-
-
Add
ElasticInferenceServiceCompletionServiceSettings
#123155 - Add enterprise license check to inference action for semantic text fields #122293
- Avoid potentially throwing calls to Task#getDescription in model download #124527
- Change format for Unified Chat #121396
-
Fix
AlibabaCloudSearchCompletionAction
not acceptingChatCompletionInputs
#125023 - Fix get all inference endponts not returning multiple endpoints sharing model deployment #121821
- Fix serialising the inference update request #122278
- Fixing bedrock event executor terminated cache issue #118177 (issue: #117916)
- Fixing bug setting index when parsing Google Vertex AI results #117287
- Retry on streaming errors #123076
- Set Connect Timeout to 5s #123272
- Set default similarity for Cohere model to cosine #125370 (issue: #122878)
- Updating Inference Update API documentation to have the correct PUT method #121048
-
[Inference API] Fix output stream ordering in
InferenceActionProxy
#124225
-
Add
- Mapping
-
-
Avoid serializing empty
_source
fields in mappings #122606 - Fix realtime get of nested fields with synthetic source #119575 (issue: #119553)
- Merge field mappers when updating mappings with [subobjects:false] #120370 (issue: #120216)
- Merge template mappings properly during validation #124784 (issue: #123372)
-
Tweak
copy_to
handling in synthetic_source
to account for nested objects #120974 (issue: #120831)
-
Avoid serializing empty
- Ranking
-
- Fix LTR query feature with phrases (and two-phase) queries #125103
- Search
-
- Catch and handle disconnect exceptions in search #115836
-
Fix leak in
DfsQueryPhase
and introduce search disconnect stress test #116060 (issue: #115056) - Handle long overflow in dates #124048 (issue: #112483)
-
Handle search timeout in
SuggestPhase
#122357 (issue: #122186) - In this pr, a 400 error is returned when _source / _seq_no / _feature / _nested_path / _field_names is requested, rather a 5xx #117229
-
Load
FieldInfos
from store if not yet initialised through a refresh onIndexShard
#125650 (issue: #125483) - Log stack traces on data nodes before they are cleared for transport #125732
- Re-enable parallel collection for field sorted top hits #125916
- Skip fetching _inference_fields field in legacy semantic_text format #121720
- Support indices created in ESv6 and updated in ESV7 using different LuceneCodecs as archive in current version. #125389
-
Test/107515
RestoreTemplateWithMatchOnlyTextMapperIT
#120898 - Fix/SearchStatesIt_failures #117729
-
CrossClusterIT
testCancel
failure #117750 (issue: #108061)
- Snapshot/Restore
- Suggesters
- TLS
- Transform
- Vector Search
- Watcher
Deprecations
editEnhancements
edit- Authentication
-
-
Allow
SSHA-256
for API key credential hash #120997
-
Allow
- Authorization
-
- Allow kibana_system user to manage .reindexed-v8-internal.alerts indices #118959
- Do not fetch reserved roles from native store when Get Role API is called #121971
- Make reserved built-in roles queryable #117581
-
[Security Solution] allows
kibana_system
user to manage .reindexed-v8-* Security Solution indices #119054
- CCS
-
- Resolve/cluster allows querying for cluster info only (no index expression required) #119898
- Data streams
-
- Add action to create index from a source index #118890
- Add index and reindex request settings to speed up reindex #119780
-
Add rest endpoint for
create_from_source_index
#119250 -
Add sanity check to
ReindexDatastreamIndexAction
#120231 - Adding a migration reindex cancel API #118291
- Adding get migration reindex status #118267
- Consistent mapping for OTel log and event bodies #120547
- Filter deprecated settings when making dest index #120163
- Ignore closed indices for reindex #120244
- Improve how reindex data stream index action handles api blocks #120084
-
Initial work on
ReindexDatastreamIndexAction
#116996 -
Make
requests_per_second
configurable to throttle reindexing #120207 - Optimized index sorting for OTel logs #119504
- Reindex data stream indices on different nodes #125171
- Report Deprecated Indices That Are Flagged To Ignore Migration Reindex As A Warning #120629
- Retry ILM async action after reindexing data stream #124149
- Update data stream deprecations warnings to new format and filter sea… #119097
- Distributed
-
- Metrics for incremental bulk splits #116765
- Downsampling
- EQL
- ES|QL
-
- Add ES|QL cross-cluster query telemetry collection #119474
-
Add a
LicenseAware
interface for licensed Nodes #118931 (issue: #117405) -
Add a
PostAnalysisAware,
distribute verification #119798 - Add a standard deviation aggregating function: STD_DEV #116531
- Add cluster level reduction #117731
- Add nulls support to Categorize #117655
- Async search responses have CCS metadata while searches are running #117265
- Backport Term query for ES|QL to 8.x #118135
- Backport scoring support in ES|QL to 8.x branch #117747
- Check for early termination in Driver #118188
-
Do not serialize
EsIndex
in plan #119580 - ES|QL - Remove restrictions for disjunctions in full text functions #118544
-
ES|QL - enabling scoring with METADATA
_score
#113120 - ES|QL Add ES|QL hash function #117989
- ES|QL Support IN operator for Date nanos #119772 (issue: #118578)
-
ES|QL: CATEGORIZE as a
BlockHash
#114317 - ES|QL: Enterprise license enforcement for CCS #118102
- ES|QL: Partial result on demand for async queries #118122
- Enable KQL function as a tech preview #119730
- Enable LOOKUP JOIN in non-snapshot builds #121193 (issue: #121185)
- Enable node-level reduction by default #119621
- Enable physical plan verification #118114
- ES|QL - Support date nanos in date extract function #120727 (issue: #110000)
- ES|QL - support date nanos in date format function #120143 (issue: #109994)
- ES|QL Support date nanos on date diff function #120645 (issue: #109999)
- ES|QL bucket function for date nanos #118474 (issue: #118031)
- ES|QL compare nanos and millis #118027 (issue: #116281)
- ES|QL implicit casting for date nanos #118697 (issue: #118476)
-
Extend
TranslationAware
to all pushable expressions #120192 - Hash functions #118938
-
Implement a
MetricsAware
interface #121074 - LOOKUP JOIN using field-caps for field mapping #117246
- Lookup join on multiple join fields not yet supported #118858
- Move scoring in ES|QL out of snapshot #120354
-
Optimize ST_EXTENT_AGG for
geo_shape
andcartesian_shape
#119889 -
Push down
StartsWith
andEndsWith
functions to Lucene #123381 (issue: #123067) - Push down filter passed lookup join #118410
- Resume Driver on cancelled or early finished #120020
-
Reuse child
outputSet
inside the plan where possible #124611 - Rewrite TO_UPPER/TO_LOWER comparisons #118870 (issue: #118304)
- ST_EXTENT_AGG optimize envelope extraction from doc-values for cartesian_shape #118802
- Smarter field caps with subscribable listener #116755
- Support some stats on aggregate_metric_double #120343 (issue: #110649)
- Take named parameters for identifier and pattern out of snapshot #121850
- Term query for ES|QL #117359
-
Update grammar to rely on
indexPattern
instead of identifier in join target #120494 -
_score
should not be a reserved attribute in ES|QL #118435 (issue: #118460)
- Engine
-
- Enhance add-block API to flush and add verified metadata #119743
- Experiences
-
- Integrate IBM watsonx to Inference API for re-ranking task #117176
- Geo
-
- Optimize indexing points with index and doc values set to true #120271
- ILM+SLM
-
-
Add a
replicate_for
option to the ILMsearchable_snapshot
action #119003
-
Add a
- Indices APIs
- Inference
-
-
[Inference API] Rename
model_id
prop to model in EIS sparse inference request body #122398 - Add version prefix to Inference Service API path #117696
- Update sparse text embeddings API route for Inference Service #118369
- [Elastic Inference Service] Add ElasticInferenceService Unified ChatCompletions Integration #118871
-
[Inference API] Rename
- Infra/CLI
- Infra/Core
- Infra/REST API
-
-
A new query parameter
?include_source_on_error
was added for create / index, update and bulk REST APIs to control if to include the document source in the error response in case of parsing errors. The default value istrue
. #120725
-
A new query parameter
- Ingest Node
- Logs
-
- Add LogsDB option to route on sort fields #116687
- Add a new index setting to skip recovery source when synthetic source is enabled #114618
- Configure index sorting through index settings for logsdb #118968 (issue: #118686)
- Optimize loading mappings when determining synthetic source usage and whether host.name can be sorted on. #120055
- Machine Learning
-
- Add Inference Unified API for chat completions for OpenAI #117589
- Add Jina AI API to do inference for Embedding and Rerank models #118652
- Add enterprise license check for Inference API actions #119893
-
Adding chunking settings to
IbmWatsonxService
#114914 - Adding default endpoint for Elastic Rerank #117939
- Adding endpoint creation validation for all task types to remaining services #115020
- Check for presence of error object when validating streaming responses from integrations in the inference API #118375
- Ignore failures from renormalizing buckets in read-only index #118674
- Inference duration and error metrics #115876
- Migrate stream to core error parsing #120722
- Remove all mentions of eis and gateway and deprecate flags that do #116692
- Remove deprecated sort from reindex operation within dataframe analytics procedure #117606
-
Retry on
ClusterBlockException
on transform destination index #118194
- Mapping
-
- Add Optional Source Filtering to Source Loaders #113827
- Network
- Ranking
-
- Set default reranker for text similarity reranker to Elastic reranker #120551
- Search
-
-
Add match support for
semantic_text
fields #117839 -
Add support for
sparse_vector
queries againstsemantic_text
fields #118617 -
Add support for knn vector queries on
semantic_text
fields #119011 - Adding linear retriever to support weighted sums of sub-retrievers #120222
-
Feat: add a user-configurable timeout parameter to the
_resolve/cluster
API #120542 - Make semantic text part of the text family #119792
- Only aggregations require at least one shard request #115314
-
Prevent data nodes from sending stack traces to coordinator when
error_trace=false
#118266 - Propagate status codes from shard failures appropriately #118016 (issue: #118482)
-
Add match support for
- Snapshot/Restore
- Store
-
-
Abort pending deletion on
IndicesService
close #123569
-
Abort pending deletion on
- TSDB
-
- Increase field limit for OTel metrics to 10 000 #120591
- Transform
- Vector Search
New features
edit- CRUD
-
- Metrics for indexing failures due to version conflicts #119067
- ES|QL
-
- ES|QL - Add Match function options #120360
- ES|QL - Allow full text functions disjunctions for non-full text functions #120291
- ES|QL: Enable async get to support formatting #111104 (issue: #110926)
- Expand type compatibility for match function and operator #117555
- ST_EXTENT aggregation #117451 (issue: #104659)
- Support ST_ENVELOPE and related (ST_XMIN, ST_XMAX, ST_YMIN, ST_YMAX) functions #116964 (issue: #104875)
- Highlighting
-
- Add Highlighter for Semantic Text Fields #118064
- Infra/Core
-
- Infrastructure for assuming cluster features in the next major version #118143
- Machine Learning
- Mapping
- Ranking
- Relevance
-
- Add Multi-Field Support for Semantic Text Fields #120128
- Vector Search
-
-
Add new experimental
rank_vectors
mapping for late-interaction second order ranking #118804 - KNN vector rescoring for quantized vectors #116663
- Mark bbq indices as GA and add rolling upgrade integration tests #121105
-
Add new experimental
rank_vectors
mapping for late-interaction second order ranking #119601
-
Add new experimental
Upgrades
edit- Infra/Core
-
- Bump major version for feature migration system indices #117243
- Permanently switch from Java SecurityManager to Entitlements. The Java SecurityManager has been deprecated since Java 17, and it is now completely disabled in Java 24. In order to retain a similar level of protection, Elasticsearch implemented its own protection mechanism, Entitlements. Starting with this version, Entitlements will permanently replace the Java SecurityManager. #125073
- Update ASM 9.7 → 9.7.1 to support JDK 24 #118094
- Machine Learning
-
- Automatically rollover legacy .ml-anomalies indices #120885
- Automatically rollover legacy ml indices #120405
- Change the auditor to write via an alias #120064
- Check if the anomaly results index has been rolled over #125404
- Update minimum supported snapshot version for Machine Learning jobs to 8.3.0 #118166
- Packaging
-
- Update bundled JDK to Java 24 #125159
- Search
-
- Upgrade to Lucene 9.12.1 #118300
- Watcher
-
-
Script for migrating
.watches
and.triggered_watches
indices #120371
-
Script for migrating
Known issues
edit- Infra/Core
-
-
Elasticsearch on Windows might fail to start, or might forbid some file-related operations, when referencing paths with a case different from the one stored by the filesystem. Windows treats paths as case-insensitive, but the filesystem stores them with case. Entitlements, the new security system used by Elasticsearch, treat all paths as case-sensitive, and can therefore prevent access to a path that should be accessible.
For example: If Elasticsearch is installed in
C:\ELK\elasticsearch
, and you try to launch it asc:\elk\elasticsearch\bin\elasticsearch.bat
, you will get aNotEntitledException
while booting. This is because Elasticsearch blocks access toc:\elk\elasticsearch
, because does not matchC:\ELK\elasticsearch
. This issue will be fixed in a future patch release (see #126990).As a workaround, make sure that all paths you specify have the same casing as the paths stored in the filesystem. Files and directory names should be entered as they appear in Windows Explorer or in a command prompt. This applies to paths specified in the command line, config files, environment variables and secure settings.
-
Active Directory authentication is blocked by default. Entitlements, the new security system used by Elasticsearch, has a policy for the
x-pack-core
module that is too restrictive, and does not allow the LDAP library used for AD authentication to perform outbound network connections. This issue will be fixed in a future patch release (see #126992).As a workaround, you can temporarily patch the policy using a JVM option:
-
Create a file called
${ES_CONF_PATH}/jvm_options/workaround-127061.options
. -
Add the following line to the new file:
-Des.entitlements.policy.x-pack-core=dmVyc2lvbnM6CiAgLSA4LjE4LjAKICAtIDkuMC4wCnBvbGljeToKICB1bmJvdW5kaWQubGRhcHNkazoKICAgIC0gc2V0X2h0dHBzX2Nvbm5lY3Rpb25fcHJvcGVydGllcwogICAgLSBvdXRib3VuZF9uZXR3b3Jr
For information about editing your JVM settings, refer to Set JVM options.
-
Create a file called
-