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
anddate_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
Breaking Java changes
Infra/Plugins
- Remove IndexStore and DirectoryService #42446
Deprecations
Authorization
- Deprecate permission over aliases #38059
Features/Features
Mapping
Reindex
Search
- Deprecate using 0 value for
min_children
inhas_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
- Add support for replicating closed indices #39499 (issues: #33888, #33903, #37359, #37413, #38024, #38326, #38327, #38329, #38421, #38631, #38767, #38854, #38955, #39006, #39110, #39186, #39249, #39364)
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
- Expose proximity boosting #39385 (issue: #33382)
- Add randomScore function in script_score query #40186 (issue: #31461)
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
Suggesters
Features/Ingest
- Add HTML strip processor #41888
Search
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
Authentication
- Hash token values for storage #41792 (issues: #39631, #40765)
- Security Tokens moved to a new separate index #40742 (issue: #34454)
- Support concurrent refresh of refresh tokens #39631 (issue: #36872)
- Add enabled status for token and api key service #38687 (issue: #38535)
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
- Prevent in-place downgrades and invalid upgrades #41731
- Add index name to cluster block exception #41489 (issue: #40870)
- Noop peer recoveries on closed index #41400 (issue: #33888)
- Do not trim unsafe commits when open readonly engine #41041 (issue: #33888)
- Avoid background sync on relocated primary #40800 (issue: #40731)
- No mapper service and index caches for replicated closed indices #40423
- Add support for replicating closed indices #39499 (issues: #33888, #33903, #37359, #37413, #38024, #38326, #38327, #38329, #38421, #38631, #38767, #38854, #38955, #39006, #39110, #39186, #39249, #39364)
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
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
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
- Implement IIF(
, , ) #41420 (issue: #40917) - Use field caps inside DESCRIBE TABLE as well #41377 (issue: #34071)
- Implement CURRENT_TIME/CURTIME functions #40662 (issue: #40648)
- Polish behavior of SYS TABLES command #40535 (issue: #40348)
- Adjust the precision and scale for drivers #40467 (issue: #40357)
- Polish parsing of CAST expression #40428
- Fix classpath discovery on Java 10+ #40420 (issue: #40388)
- Spec tests now use classpath discovery #40388 (issue: #40358)
- Implement
::
cast operator #38774 (issue: #38717)
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
inhas_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
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
CCR
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
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
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
- Don’t create tempdir for cli scripts #41913 (issue: #34445)
- Cleanup plugin bin directories #41907 (issue: #18109)
- Update lintian overrides #41561 (issue: #17185)
- Resolve JAVA_HOME at windows service install time #39714 (issue: #30720)
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
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
Infra/Core
- Update to joda time 2.10.2 #42199
Network
- Upgrade to Netty 4.1.35 #41499