Elasticsearch version 7.3.0

Also see Breaking changes in 7.3.

Known issues

  • Applying deletes or updates on an index after it has been shrunk may corrupt the index. In order to prevent this issue, it is recommended to stop shrinking read-write indices. For read-only indices, it is recommended to force-merge indices after shrinking, which significantly reduces the likeliness of this corruption in the case that deletes/updates would be applied by mistake. This bug is fixed in Elasticsearch 7.7 and later versions. More details can be found on the corresponding issue.
  • Indices created in 6.x with date and date_nanos fields using formats that are incompatible with java.time patterns will cause parsing errors, incorrect date calculations or wrong search results. https://github.com/elastic/elasticsearch/pull/52555 This is fixed in Elasticsearch 7.7 and later versions.

Breaking changes

CCR

  • Do not allow modify aliases on followers #43017 (issue: #41396)

Data Frame

  • Removing format support in date_histogram group_by #43659

Breaking Java changes

Mapping

Search

  • Refactor IndexSearcherWrapper to disallow the wrapping of IndexSearcher #43645

Deprecations

Features/Java High Level REST Client

  • Deprecate native code info in xpack info api #43297

Mapping

  • Deprecate support for chained multi-fields. #41926 (issue: #41267)

Network

  • Deprecate transport profile security type setting #43237

Search

  • Deprecate CommonTermsQuery and cutoff_frequency #42619 (issue: #37096)

New features

Aggregations

Audit

  • Enable console audit logs for docker #42671 (issue: #42666)

Data Frame

Infra/Settings

  • Consistent Secure Settings #40416

Machine Learning

  • Machine learning data frame analytics #43544

Mapping

Ranking

  • Move dense_vector and sparse_vector to module #43280

SQL

Search

Enhancements

Aggregations

  • Allocate memory lazily in BestBucketsDeferringCollector #43339 (issue: #43091)
  • Reduce the number of docvalues iterator created in the global ordinals fielddata #43091

Analysis

  • Return reloaded analyzers in _reload_search_ananlyzer response #43813 (issue: #43804)
  • Allow reloading of search time analyzers #43313 (issue: #29051)
  • Allow reloading of search time analyzers #42888 (issue: #29051)
  • Allow reloading of search time analyzers #42669 (issue: #29051)

Authentication

  • Always attach system user to internal actions #43468 (issue: #42215)
  • Add kerberos grant_type to get token in exchange for Kerberos ticket #42847 (issue: #41943)
  • Permit API Keys on Basic License #42787

Authorization

  • Add “manage_api_key” cluster privilege #43728 (issue: #42020)
  • Use separate BitSet cache in Doc Level Security #43669 (issue: #30974)
  • Support builtin privileges in get privileges API #42134 (issue: #29771)

CCR

  • Replicate aliases in cross-cluster replication #41815 (issue: #41396)

Cluster Coordination

  • Ignore unknown fields if overriding node metadata #44689
  • Add voting-only master node #43410 (issue: #14340)
  • Defer reroute when nodes join #42855
  • Stop SeedHostsResolver on shutdown #42844
  • Log leader and handshake failures by default #42342 (issue: #42153)

Data Frame

  • Add a frequency option to transform config, default 1m #44120
  • Add node attr to GET _stats #43842 (issue: #43743)
  • Add deduced mappings to _preview response payload #43742 (issue: #39250)
  • Add support for allow_no_match for endpoints #43490 (issue: #42766)
  • Add version and create_time to transform config #43384 (issue: #43037)
  • Have sum map to a double to prevent overflows #43213
  • Add new pipeline field to dest config #43124 (issue: #43061)
  • Write a warning audit on bulk index failures #43106
  • Add support for weighted_avg agg #42646

Distributed

Engine

  • Use reader attributes to control term dict memory useage #42838 (issue: #38390)
  • Remove sort by primary term when reading soft-deletes #43845
  • Refresh translog stats after translog trimming in NoOpEngine #43825 (issue: #43156)
  • Expose translog stats in ReadOnlyEngine #43752
  • Do not use soft-deletes to resolve indexing strategy #43336 (issues: #35230, #42979, #43202)
  • Rebuild version map when opening internal engine #43202 (issues: #40741, #42979)
  • Only load FST off heap if we are actually using mmaps for the term dictionary #43158 (issue: #43150)
  • Trim translog for closed indices #43156 (issue: #42445)
  • Also mmap terms index (.tip) files for hybridfs #43150 (issue: #42838)
  • Add a merge policy that prunes ID postings for soft-deleted but retained documents #40741

Features/Indices APIs

  • Remove “template” field in IndexTemplateMetadata #42099 (issue: #38502)

Features/Ingest

  • Avoid HashMap construction on Grok non-match #42444
  • Improve how internal representation of pipelines are updated #42257

Features/Java High Level REST Client

  • Add _reload_search_analyzers endpoint to HLRC #43733 (issue: #43313)
  • Bulk processor concurrent requests #41451

Features/Java Low Level REST Client

  • Adapt low-level REST client to java 8 #41537 (issue: #38540)

Features/Monitoring

  • Expand beats_system role privileges #40876

Features/Watcher

  • Improve CryptoService error message on missing secure file #43623 (issue: #43619)
  • Watcher: Allow to execute actions for each element in array #41997 (issue: #34546)

Infra/Core

  • Shortcut simple patterns ending in * #43904
  • Prevent merging nodes’ data paths #42665 (issue: #42489)
  • Deprecation info for joda-java migration on 7.x #42659 (issue: #42010)
  • Implement XContentParser.genericMap and XContentParser.genericMapOrdered methods #42059

Infra/Packaging

  • Omit JDK sources archive from bundled JDK #42821

Infra/Plugins

  • Enable node roles to be pluggable #43175

Infra/Scripting

  • Add annotations to Painless whitelist #43239
  • Add painless method getByPath, get value from nested collections with dotted path #43170 (issue: #42769)
  • Add painless method getByPath, get value from nested collections with dotted path #43129 (issue: #42769)

Machine Learning

  • Add version and create_time to data frame analytics config #43683
  • Improve message when native controller cannot connect #43565 (issue: #42341)
  • Report exponential_avg_bucket_processing_time which gives more weight to recent buckets #43189 (issue: #29857)
  • Adding support for geo_shape, geo_centroid, geo_point in datafeeds #42969 (issue: #42820)
  • Report timing stats as part of the Job stats response #42709 (issue: #29857)
  • Increase maximum forecast interval to 10 years. #41082 (issue: #41103)
  • Upgrade to a newer version of the Apache Portable Runtime library. #495
  • Improve stability of modelling around change points. #496
  • Restrict detection of epoch timestamps in find_file_structure #43188
  • Better detection of binary input in find_file_structure #42707
  • Add a limit on line merging in find_file_structure #42501 (issue: #38086)
  • Improve file structure finder timestamp format determination #41948 (issues: #35132, #35137, #38086)
  • Add earliest and latest timestamps to field stats in find_file_structure response #42890
  • Change dots in CSV column names to underscores in find_file_structure response #42839 (issue: #26800)

Mapping

  • Add dims parameter to dense_vector mapping #43444
  • Added parsing of erroneous field value #42321 (issue: #41372)

Network

  • Do not hang on unsupported HTTP methods #43362

Ranking

  • Fix parameter value for calling data.advanceExact #44205
  • Distance measures for dense and sparse vectors #37947 (issue: #31615)

Recovery

  • Make peer recovery send file info step async #43792 (issue: #36195)
  • Make peer recovery clean files step async #43787 (issue: #36195)

Reindex

Search

  • Split search in two when made against read-only and write indices #42510 (issue: #40900)
  • Rename SearchRequest#crossClusterSearch #42363
  • Allow fields to be set to * #42301 (issue: #39577)
  • Search - enable low_level_cancellation by default. #42291 (issue: #26258)
  • Cut over ClusterSearchShardsGroup to Writeable #41788
  • Disable max score optimization for queries with unbounded max scores #41361

Snapshot/Restore

  • Recursive Delete on BlobContainer #43281 (issue: #42189)
  • Add SAS Token Authentication Support to Azure Repo Plugin #42982 (issue: #42117)
  • Enable Parallel Deletes in Azure Repository #42783
  • Add Ability to List Child Containers to BlobContainer #42653 (issue: #42189)
  • Add custom metadata to snapshots #41281 (issue: #40638)

Store

Bug fixes

Aggregations

  • Fix incorrect calculation of how many buckets will result from a merge #44461 (issue: #43577)
  • Set document on script when using Bytes.WithScript #43390
  • Bug fix to allow access to top level params in reduce script #42096 (issue: #42046)

Allocation

  • Do not copy initial recovery filter during split #44053 (issue: #43955)
  • Avoid parallel reroutes in DiskThresholdMonitor #43381 (issue: #40174)
  • Reset failed allocation counter before executing routing commands #42658 (issue: #39546)
  • Validate routing commands using updated routing state #42066 (issue: #41050)

Analysis

  • Fix AnalyzeAction response serialization #44284 (issue: #44078)
  • Actually close IndexAnalyzers contents #43914
  • Issue deprecation warnings for preconfigured delimited_payload_filter #43684 (issues: #26625, #43568)
  • Use preconfigured filters correctly in Analyze API #43568 (issue: #43002)
  • Require [articles] setting in elision filter #43083 (issue: #43002)

Authentication

  • Fix broken short-circuit in getUnlicensedRealms #44399
  • Fix Token Service retry mechanism #39639

CCR

  • Skip update if leader and follower settings identical #44535 (issue: #44521)
  • Avoid stack overflow in auto-follow coordinator #44421 (issue: #43251)
  • Avoid NPE when checking for CCR index privileges #44397 (issue: #44172)
  • CCR should not replicate private/internal settings #43067 (issue: #41268)

CRUD

  • Fix NPE when rejecting bulk updates #42923
  • Fix “size” field in the body of AbstractBulkByScrollRequest #35742 (issue: #35636)

Cluster Coordination

  • Local node is discovered when cluster fails #43316
  • Reset state recovery after successful recovery #42576 (issue: #39172)
  • Cluster state from API should always have a master #42454 (issues: #38331, #38432)
  • Omit non-masters in ClusterFormationFailureHelper #41344

Data Frame

  • Treat bulk index failures as an indexing failure #44351 (issue: #44101)
  • Responding with 409 status code when failing _stop #44231 (issue: #44103)
  • Adds index validations to _start data frame transform #44191 (issue: #44104)
  • Data frame task failure do not make a 500 response #44058 (issue: #44011)
  • Audit message missing for autostop #43984 (issue: #43977)
  • Add data frame transform cluster privileges to HLRC #43879
  • Improve pivot nested field validations #43548
  • Adjusting error message #43455
  • Size the GET stats search by number of Ids requested #43206 (issue: #43203)
  • Rewrite start and stop to answer with acknowledged #42589 (issue: #42450)
  • Set data frame transform task state to stopped when stopping #42516 (issue: #42441)

Distributed

  • Fix DefaultShardOperationFailedException subclass xcontent serialization #43435 (issue: #43423)
  • Advance checkpoints only after persisting ops #43205
  • Avoid loading retention leases while writing them #42620 (issue: #41430)
  • Do not use ifSeqNo for update requests on mixed cluster #42596 (issue: #42561)
  • Ensure relocation target still tracked when start handoff #42201

Engine

  • AsyncIOProcessor preserve thread context #43729
  • Account soft deletes for committed segments #43126 (issue: #43103)
  • Prune _id of only docs below local checkpoint of safe commit #43051 (issues: #40741, #42979)
  • Improve translog corruption detection #42744 (issue: #42661)

Features/CAT APIs

Features/ILM

  • Fix swapped variables in error message #44300
  • Account for node versions during allocation in ILM Shrink #43300 (issue: #41879)
  • Narrow period of Shrink action in which ILM prevents stopping #43254 (issue: #43253)
  • Make ILM force merging best effort #43246 (issues: #42824, #43245)

Features/Indices APIs

Features/Ingest

  • Read the default pipeline for bulk upsert through an alias #41963

Features/Java High Level REST Client

  • Fix CreateRepository Requeset in HLRC #43522 (issue: #43521)

Features/Stats

  • Return 0 for negative “free” and “total” memory reported by the OS #42725 (issue: #42157)

Features/Watcher

  • NullPointerException when creating a watch with Jira action (#41922) #42081
  • fix unlikely bug that can prevent Watcher from restarting #42030

Infra/Core

Infra/Packaging

  • Restore setting up temp dir for windows service #44541
  • Fix the bundled jdk flag to be passed through windows startup #43502

Infra/Plugins

  • Do not checksum all bytes at once in plugin install #44649 (issue: #44545)

Infra/REST API

  • Remove deprecated _source_exclude and _source_include from get API spec #42188

Infra/Scripting

  • Allow aggregations using expressions to use _score #42652

Machine Learning

  • Update .ml-config mappings before indexing job, datafeed or df analytics config #44216 (issue: #44263)
  • Wait for .ml-config primary before assigning persistent tasks #44170 (issue: #44156)
  • Fix ML memory tracker lockup when inner step fails #44158 (issue: #44156)
  • Reduce false positives associated with the multi-bucket feature. #491
  • Reduce false positives for sum and count functions on sparse data. #492
  • Fix an edge case causing spurious anomalies (false positives) if the variance in the count of events changed significantly throughout the period of a seasonal quantity. (See #489.)

Mapping

  • Ensure field caps doesn’t error on rank feature fields. #44370 (issue: #44330)
  • Prevent types deprecation warning for indices.exists requests #43963 (issue: #43905)
  • Fix index_prefix sub field name on nested text fields #43862 (issue: #43741)
  • Fix possible NPE in put mapping validators #43000 (issue: #37675)
  • Allow big integers and decimals to be mapped dynamically. #42827 (issue: #37846)

Network

  • Reconnect remote cluster when seeds are changed #43379 (issue: #37799)
  • Don’t require TLS for single node clusters #42826
  • Fix Class Load Order in Netty4Plugin #42591 (issue: #42532)

Recovery

  • Ensure to access RecoveryState#fileDetails under lock #43839
  • Make Recovery API support detailed params #29076 (issue: #28910)

Reindex

  • Properly serialize remote query in ReindexRequest #43457 (issues: #43406, #43456)
  • Fixing handling of auto slices in bulk scroll requests #43050
  • Remote reindex failure parse fix #42928
  • Fix concurrent search and index delete #42621 (issue: #28053)
  • Propogate version in reindex from remote search #42412 (issue: #31908)

SQL

  • SQL: change the size of the list of concrete indices when resolving multiple indices #43878 (issue: #43876)
  • SQL: handle double quotes escaping #43829 (issue: #43810)
  • SQL: add pretty printing to JSON format #43756
  • SQL: handle SQL not being available in a more graceful way #43665 (issue: #41279)
  • SQL: fix NPE in case of subsequent scrolled requests for a CSV/TSV formatted response #43365 (issue: #43327)
  • Geo: Add coerce support to libs/geo WKT parser #43273 (issue: #43173)
  • SQL: Increase hard limit for sorting on aggregates #43220 (issue: #43168)
  • SQL: Fix wrong results when sorting on aggregate #43154 (issue: #42851)
  • SQL: cover the Integer type when extracting values from _source #42859 (issue: #42858)

Search

  • Don’t use index_phrases on graph queries #44340 (issue: #43976)
  • Fix wrong logic in match_phrase query with multi-word synonyms #43941 (issue: #43308)
  • Fix UOE on search requests that match a sparse role query #43668 (issue: #42857)
  • Fix propagation of enablePositionIncrements in QueryStringQueryBuilder #43578 (issue: #43574)
  • Fix score mode of the MinimumScoreCollector #43527 (issue: #43497)
  • Fix round up of date range without rounding #43303 (issue: #43277)
  • SearchRequest#allowPartialSearchResults does not handle successful retries #43095 (issue: #40743)
  • Wire query cache into sorting nested-filter computation #42906 (issue: #42813)
  • Fix auto fuzziness in query_string query #42897
  • Fix IntervalBuilder#analyzeText to never return null #42750 (issue: #42587)
  • Fix sorting on nested field with unmapped #42451 (issue: #33644)
  • Deduplicate alias and concrete fields in query field expansion #42328

Security

  • Do not swallow I/O exception getting authentication #44398 (issues: #44172, #44397)
  • Use system context for looking up connected nodes #43991 (issue: #43974)
  • SecurityIndexSearcherWrapper doesn’t always carry over caches and similarity #43436
  • Detect when security index is closed #42191

Snapshot/Restore

  • Check again on-going snapshots/restores of indices before closing #43873
  • Fix Azure List by Prefix Bug #42713

Store

  • Remove usage of FileSwitchDirectory #42937 (issue: #37111)
  • Fix Infinite Loops in ExceptionsHelper#unwrap #42716 (issue: #42340)

Suggesters

  • Fix suggestions for empty indices #42927 (issue: #42473)
  • Skip explain phase when only suggestions are requested #41739 (issue: #31260)

Regressions

Infra/Core

  • Restore date aggregation performance in UTC case #38221 (issue: #37826)

Upgrades

Discovery-Plugins

  • Upgrade AWS SDK to Latest Version #42708

Engine

  • Upgrade to Lucene 8.1.0 #42214

Infra/Core

  • Upgrade HPPC to version 0.8.1 #43025

Network

Snapshot/Restore

  • Upgrade GCS Repository Dependencies #43142