Elasticsearch version 7.2.0

Also see Breaking changes in 7.2.

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

Cluster Coordination

  • Reject port ranges in discovery.seed_hosts #41404 (issue: #40786)

Breaking Java changes

Infra/Plugins

  • Remove IndexStore and DirectoryService #42446

Deprecations

Authorization

  • Deprecate permission over aliases #38059

Features/Features

  • Add deprecation check for ILM poll interval <1s #41096 (issue: #39163)

Mapping

Reindex

  • Reindex from remote deprecation of escaped index #41005 (issue: #40303)

Search

  • Deprecate using 0 value for min_children in has_child query #41548 #41555 (issue: #41548)
  • Deprecate support for first line empty in msearch API #41442 (issue: #41011)

Security

  • Deprecate the native realm migration tool #42142

New features

Authentication

  • Add an OpenID Connect authentication realm #40674

Distributed

Infra/Scripting

  • Add painless string split function (splitOnToken) #39772 (issue: #20952)
  • Add a Painless Context REST API #39382

Machine Learning

  • Add data frame feature #38934

Ranking

SQL

  • Add initial geo support #42031 (issues: #29872, #37206)
  • Implement CASE…​ WHEN…​ THEN…​ ELSE…​ END #41349 (issue: #36200)
  • Introduce MAD (MedianAbsoluteDeviation) aggregation #40048 (issue: #39597)
  • Introduce SQL TIME data type #39802 (issue: #38174)
  • Introduce the columnar option for REST requests #39287 (issue: #37702)

Snapshot/Restore

  • Allow snapshotting replicated closed indices #39644 (issue: #33888)

Suggesters

Features/Ingest

  • Add HTML strip processor #41888

Search

  • Add an option to force the numeric type of a field sort #38095 (issue: #32601)

Enhancements

Aggregations

  • Use the breadth first collection mode for significant terms aggs. #29042 (issue: #28652)
  • Disallow null/empty or duplicate composite sources #41359 (issue: #32414)
  • Move top-level pipeline aggs out of QuerySearchResult #40319 (issue: #40177)
  • Remove throws IOException from PipelineAggregationBuilder#create #40222
  • Better error messages when pipelines reference incompatible aggs #40068 (issues: #25273, #30152)
  • Do not allow Sampler to allocate more than maxDoc size, better CB accounting #39381 (issue: #34269)
  • Force selection of calendar or fixed intervals in date histo agg #33727

Allocation

  • Reset failed allocation counter before executing routing commands #41050 (issue: #39546)
  • Supporting automatic release of index blocks. Closes #39334 #40338 (issue: #39334)

Analysis

  • Add flag to declare token filters as updateable #36103 (issue: #29051)

Authentication

Authorization

  • Support mustache templates in role mappings #39984 (issue: #36567)
  • Add .code_internal-* index pattern to kibana user #42247
  • Add granular API key privileges #41488 (issue: #40031)
  • Add Kibana application privileges for monitoring and ml reserved roles #40651
  • Support roles with application privileges against wildcard applications #40398

CCR

CRUD

  • Add details to BulkShardRequest#getDescription() #41711
  • Add version-based validation to reindex requests #38504 (issue: #37855)

Cluster Coordination

  • Add GET /_cluster/master endpoint #40047
  • Only connect to new nodes on new cluster state #39629 (issues: #29025, #31547)
  • Add has_voting_exclusions flag to cluster health output #38568

Data Frame

  • Persist and restore checkpoint and position #41942 (issue: #41752)
  • Complete the Data Frame task on stop #41752
  • Data Frame stop all #41156
  • Data Frame HLRC Get Stats API #40327
  • Data Frame HLRC Get API #40209
  • Data Frame HLRC Preview API #40206
  • Data Frame HLRC start & stop APIs #40154 (issue: #29546)
  • Add Data Frame client to the Java HLRC #39921

Discovery-Plugins

  • Upgrade SDK and test discovery-ec2 credential providers #41732

Distributed

Docs Infrastructure

  • Docs: Simplifying setup by using module configuration variant syntax #40879

Engine

  • Simplify initialization of max_seq_no of updates #41161 (issues: #33842, #40249)
  • Adjust init map size of user data of index commit #40965
  • Don’t mark shard as refreshPending on stats fetching #40458 (issues: #33835, #33847)
  • Reject illegal flush parameters #40213 (issue: #36342)
  • Always fail engine if delete operation fails #40117 (issue: #33256)
  • Combine overriddenOps and skippedOps in translog #39771 (issue: #33317)
  • Return cached segments stats if include_unloaded_segments is true #39698 (issue: #39512)
  • Allow inclusion of unloaded segments in stats #39512
  • Never block on scheduled refresh if a refresh is running #39462
  • Expose external refreshes through the stats API #38643 (issue: #36712)
  • Make setting index.translog.sync_interval be dynamic #37382 (issue: #32763)

Features/CAT APIs

  • Add start and stop time to cat recovery API #40378
  • Return 0 for negative “free” and “total” memory reported by the OS #42725 (issue: #42157)

Features/Indices APIs

  • Introduce aliases version #41397 (issue: #41396)
  • Improve error message for absence of indices #39789 (issues: #38964, #39296)
  • Improved error message for absence of indices closes #38964 #39296

Features/Java High Level REST Client

  • Added param ignore_throttled=false when indicesOptions.ignoreThrottle… #42393 (issue: #42358)
  • Ignore 409 conflict in reindex responses #39543

Features/Monitoring

  • Add packaging to cluster stats response #41048 (issue: #39378)

Geo

  • Improve accuracy for Geo Centroid Aggregation #41033 (issue: #41032)
  • Add support for z values to libs/geo classes #38921
  • Add ST_WktToSQL function #35416 (issue: #29872)

Infra/Core

  • Validate non-secure settings are not in keystore #42209 (issue: #41831)
  • Implement XContentParser.genericMap and XContentParser.genericMapOrdered methods #42059
  • Remove manual parsing of JVM options #41962 (issue: #30684)
  • Clarify some ToXContent implementations behaviour #41000 (issue: #16347)
  • Remove String interning from o.e.index.Index. #40350 (issue: #40263)
  • Do not swallow exceptions in TimedRunnable #39856 (issue: #36137)

Infra/Logging

Infra/Packaging

  • Clearer error message - installing windows service #33804

Infra/Resiliency

Infra/Scripting

  • Add implicit this for class binding in Painless #40285
  • Whitelist geo methods for Painless #40180 (issue: #24946)

Machine Learning

  • Improve message misformation error in file structure finder #42175
  • Improve hard_limit audit message #42086 (issue: #38034)
  • Add validation that rejects duplicate detectors in PutJobAction #40967 (issue: #39704)
  • Add created_by info to usage stats #40518 (issue: #38403)
  • Data frame transforms config HLRC objects #39691
  • Use scaling thread pool and xpack.ml.max_open_jobs cluster-wide dynamic #39320 (issue: #29809)
  • Add task recovery on node change #39416
  • Stop tasks on failure #39203
  • Add _preview endpoint #38924
  • Use hardened compiler options to build 3rd party libraries #453
  • Only select more complex trend models for forecasting if there is evidence that they are needed #463
  • Improve residual model selection #468
  • Stop linking to libcrypt on Linux #480
  • Improvements to hard_limit audit message #486
  • Increase maximum forecast interval from 8 weeks to a limit based on the amount of data seen, up to a maximum of 10 years #214 and #41082 (issue: #41103)

Mapping

  • Updates max dimensions for sparse_vector and dense_vector to 1024. #40597 (issue: #40492)
  • Add ignore_above in ICUCollationKeywordFieldMapper #40414 (issue: #40413)
  • Adding a soft limit to the field name length. Closes #33651 #40309 (issue: #33651)

Network

  • Update ciphers for TLSv1.3 and JDK11 if available #42082 (issues: #38646, #41385, #41808)
  • Show SSL usage when security is not disabled #40672 (issue: #37433)
  • Optimize Bulk Message Parsing and Message Length Parsing #39634 (issue: #39286)
  • Netty transport accept plaintext connections #39532 (issue: #39531)
  • Chunk + Throttle Netty Writes #39286

Ranking

  • Improve error message for ln/log with negative results in function score #41609 (issue: #41509)

Recovery

  • Peer recovery should flush at the end #41660 (issues: #33888, #39588, #40024)
  • Peer recovery should not indefinitely retry on mapping error #41099 (issue: #40913)
  • Init global checkpoint after copy commit in peer recovery #40823 (issue: #33888)
  • Ensure sendBatch not called recursively #39988

Reindex

SQL

Search

  • Fix range query edge cases #41160 (issue: #40937)
  • Add stopword support to IntervalBuilder #39637
  • Shortcut counts on exists queries #39570 (issue: #37475)
  • Completion suggestions to be reduced once instead of twice #39255
  • Rename SearchRequest#withLocalReduction #39108
  • Tie break search shard iterator comparisons on cluster alias #38853
  • Clean up ShardSearchLocalRequest #38574
  • Handle unmapped fields in _field_caps API #34071
  • Make 0 as invalid value for min_children in has_child query #33073 (issue: #32949)
  • Analyze numbers, dates and ips with a whitespace analyzer in text queries #27395
  • Add date and date_nanos conversion to the numeric_type sort option #40199
  • Add use_field option to intervals query #40157
  • Add overlapping, before, after filters to intervals query #38999

Security

  • Support concurrent refresh of refresh tokens #38382 (issue: #36872)

Snapshot/Restore

  • Remove IndexShard dependency from Repository #42213
  • Add shared access signature authentication support #42117
  • Support multiple repositories in get snapshot request #41799 (issue: #41210)
  • Implement Bulk Deletes for GCS Repository #41368 (issue: #40322)
  • Add Bulk Delete Api to BlobStore #40322 (issues: #40144, #40250)
  • Async Snapshot Repository Deletes #40144 (issues: #39656, #39657)
  • Allow snapshotting replicated closed indices #39644 (issue: #33888)
  • Add support for S3 intelligent tiering (#38836) #39376 (issue: #38836)

Store

  • Log missing file exception when failing to read metadata snapshot #32920

Suggesters

  • Tie-break completion suggestions with same score and surface form #39564

Bug fixes

Aggregations

  • Update error message for allowed characters in aggregation names #41573 (issue: #41567)
  • Fix FiltersAggregation NPE when filters is empty #41459 (issue: #41408)
  • Fix unmapped field handling in the composite aggregation #41280

Allocation

  • Avoid bubbling up failures from a shard that is recovering #42287 (issues: #30919, #40107)
  • Changed the position of reset counter #39678 (issue: #39546)

Analysis

  • Always use IndexAnalyzers in analyze transport action #40769 (issue: #29021)
  • Fix anaylze NullPointerException when AnalyzeTokenList tokens is null #39332
  • Fix anaylze NullPointerException when AnalyzeTokenList tokens is null #39180

Authentication

  • Refresh remote JWKs on all errors #42850
  • Fix refresh remote JWKS logic #42662
  • Fix settings prefix for realm truststore password #42336 (issues: #30241, #41663)
  • Merge claims from userinfo and ID Token correctly #42277
  • Do not refresh realm cache unless required #42169 (issue: #35218)
  • Amend prepareIndexIfNeededThenExecute for security token refresh #41697
  • Fix token Invalidation when retries exhausted #39799

Authorization

  • _cat/indices with Security, hide names when wildcard #38824 (issue: #37190)

CCR

  • CCR should not replicate private/internal settings #43067 (issue: #41268)

CRUD

  • Fix NPE when rejecting bulk updates #42923

Cluster Coordination

  • Reset state recovery after successful recovery #42576 (issue: #39172)
  • Omit non-masters in ClusterFormationFailureHelper #41344

Data Frame

  • Rewrite start and stop to answer with acknowledged #42589 (issue: #42450)
  • Set DF task state to stopped when stopping #42516 (issue: #42441)
  • Add support for fixed_interval, calendar_interval, remove interval #42427 (issues: #33727, #42297)

Distributed

  • Avoid loading retention leases while writing them #42620 (issue: #41430)
  • Do not use ifSeqNo for update requests on mixed cluster #42596 (issue: #42561)
  • Prevent order being lost for _nodes API filters #42045 (issue: #41885)
  • Ensure flush happen before closing an index #40184 (issue: #36342)

Engine

  • Account soft deletes for committed segments #43126 (issue: #43103)
  • Fix assertion error when caching the result of a search in a read-only index #41900 (issue: #41795)
  • Close and acquire commit during reset engine fix #41584 (issue: #38561)

Features/ILM

  • Make ILM force merging best effort #43246 (issues: #42824, #43245)
  • Narrow period of Shrink action in which ILM prevents stopping #43254 (issue: #43253)

Features/Indices APIs

  • Add pre-upgrade check to test cluster routing allocation is enabled #39340 (issue: #39339)

Features/Ingest

  • Build local year inside DateFormat lambda #42120

Features/Java High Level REST Client

  • Fixes a bug in AnalyzeRequest.toXContent() #42795 (issues: #39670, #42197)
  • StackOverflowError when calling BulkRequest#add #41672
  • HLRC: Convert xpack methods to client side objects #40705 (issue: #40511)
  • Rest-High-Level-Client:fix uri encode bug when url path start with / #34436 (issue: #34433)

Features/Watcher

  • NullPointerException when creating a watch with Jira action (#41922) #42081
  • Fix minor watcher bug, unmute test, add additional debug logging #41765 (issues: #29893, #30777, #33291, #35361)
  • Fix Watcher deadlock that can cause in-abilty to index documents. #41418 (issue: #41390)

Geo

  • Improve error message when polygons contains twice the same point in no-consecutive position #41051 (issue: #40998)

Highlighting

  • Bug fix for AnnotatedTextHighlighter - port of 39525 #39749 (issue: #39525)

Infra/Core

  • Fix roundUp parsing with composite patterns #43080 (issue: #42835)
  • scheduleAtFixedRate would hang #42993 (issue: #38441)
  • Only ignore IOException when fsyncing on dirs #42972 (issue: #42950)
  • Fix node close stopwatch usage #41918
  • Make ISO8601 date parser accept timezone when time does not have seconds #41896
  • Allow unknown task time in QueueResizingEsTPE #41810 (issue: #41448)
  • Parse composite patterns using ClassicFormat.parseObject #40100 (issue: #39916)

Infra/Packaging

Infra/Settings

  • Handle UTF-8 values in the keystore #39496
  • Handle empty input in AddStringKeyStoreCommand #39490 (issue: #39413)

Machine Learning

  • Fix possible race condition when closing an opening job #42506
  • Exclude analysis fields with core field names from anomaly results #41093 (issue: #39406)

Mapping

  • Fix possible NPE in put mapping validators #43000 (issue: #37675)
  • Fix merging of text field mappers #40627
  • Fix an off-by-one error in the vector field dimension limit. #40489
  • Fix not Recognizing Disabled Object Mapper #39862 (issue: #39456)
  • Avoid copying the field alias lookup structure unnecessarily. #39726
  • Handle NaNs when detrending seasonal components #408

Network

  • Don’t require TLS for single node clusters #42826
  • Handle WRAP ops during SSL read #41611
  • SSLDriver can transition to CLOSED in handshake #41458
  • Handle Bulk Requests on Write Threadpool #40866 (issues: #39128, #39658)

Percolator

  • Fixed ignoring name parameter for percolator queries #42598 (issue: #40405)

Recovery

  • Use translog to estimate number of operations in recovery #42211 (issue: #38904)
  • Recovery with syncId should verify seqno infos #41265
  • Retain history for peer recovery using leases #39133

Reindex

  • 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)

Rollup

  • Fix max boundary for rollup jobs that use a delay #42158
  • Cleanup exceptions thrown during RollupSearch #41272 (issue: #38015)
  • Validate timezones based on rules not string comparision #36237 (issue: #36229)

SQL

  • Fix wrong results when sorting on aggregate #43154 (issue: #42851)
  • Cover the Integer type when extracting values from _source #42859 (issue: #42858)
  • Fix precedence of :: psql like CAST operator #40665

Search

  • Fix IntervalBuilder#analyzeText to never return null #42750 (issue: #42587)
  • Fix sorting on nested field with unmapped #42451 (issue: #33644)
  • Always set terminated_early if terminate_after is set in the search request #40839 (issue: #33949)
  • more_like_this query to throw an error if the like fields is not provided #40632
  • Fixing 503 Service Unavailable errors during fetch phase #39086
  • Fix IndexSearcherWrapper visibility #39071 (issue: #30758)

Snapshot/Restore

  • Fix Azure List by Prefix Bug #42713
  • Remove Harmful Exists Check from BlobStoreFormat #41898 (issue: #41882)
  • Restricts naming for repositories #41008 (issue: #40817)
  • SNAPSHOT: More Resilient Writes to Blob Stores #36927 (issue: #25281)

Suggesters

Upgrades

Features/Watcher

  • Replace javax activation with jakarta activation #40247
  • Replace java mail with jakarta mail #40088

Infra/Core

  • Update to joda time 2.10.2 #42199

Network

  • Upgrade to Netty 4.1.35 #41499