5.4.0 Release Notesedit

See Multi data path bug in Elasticsearch 5.3.0.

Also see Breaking changes in 5.4.

Breaking changesedit

Settings

Breaking Java changesedit

Aggregations
  • Move getProperty method out of MultiBucketsAggregation.Bucket interface #23988
  • Remove getProperty method from Aggregations interface and impl #23972
  • Move getProperty method out of Aggregation interface #23949
Java API
  • Fold InternalSearchHits and friends into their interfaces #23042

Deprecationsedit

Aggregations
  • Deprecate Stats#getCountAsString #24292
Java API
  • Add BulkProcessor methods with XContentType parameter #23078 (issue: #22691)
Network
Packaging
  • Add deprecation warnings for $ES_USER and $ES_GROUP #24190 (issue: #23989)
Plugin Delete By Query
  • Deprecate delete_by_query requests without an explicit query #23635
Plugin Repository Azure
  • Deprecate global repositories.azure settings #22856 (issue: #22800)
Plugin Repository S3
REST
  • Deprecate ldjson support and document ndjson for bulk/msearch #23051 (issues: #23025, #23049)
Stats
  • Deprecate _field_stats endpoint #23914

New featuresedit

Analysis
  • Adds pattern keyword marker filter support #23600 (issue: #4877)
  • Expose WordDelimiterGraphTokenFilter #23327 (issue: #23104)
Index APIs
  • Add FieldCapabilities (_field_caps) API #23007 (issue: #22438)
Search
  • Introduce incremental reduction of TopDocs #23946
Similarities
  • Adds boolean similarity to Elasticsearch #23637 (issue: #6731)

Enhancementsedit

Aggregations
  • Add BucketMetricValue interface #24188
  • Move aggs CommonFields and TYPED_KEYS_DELIMITER from InternalAggregation to Aggregation #23987
  • Use ParseField for aggs CommonFields rather than String #23717
  • Share XContent rendering code in terms aggs #23680
  • Add unit tests for ParentToChildAggregator #23305 (issue: #22278)
  • First step towards incremental reduction of query responses #23253
Allocation
  • Trigger replica recovery restarts by master when primary relocation completes #23926 (issue: #23904)
  • Makes the same_shard host dynamically updatable #23397 (issue: #22992)
Analysis
  • Support Keyword type in Analyze API #23161
Cluster
  • Prevent nodes from joining if newer indices exist in the cluster #23843
Core
  • Detect remnants of path.data/default.path.data bug #24099 (issues: #23981, #24052, #24074, #24093)
  • Await termination after shutting down executors #23889
  • Add early-access check #23743 (issue: #23668)
  • Adapter action future should restore interrupts #23618 (issue: #23617)
  • Disable bootstrap checks for single-node discovery #23598 (issues: #23585, #23595)
  • Enable explicitly enforcing bootstrap checks #23585 (issue: #21864)
  • Add equals/hashcode method to ReplicationResponse #23215
Dates
  • Improve error handling for epoch format parser with time zone (#22621) #23689
Discovery
  • Introduce single-node discovery #23595
  • UnicastZenPing shouldn’t ping the address of the local node #23567
  • MasterFaultDetection can start after the initial cluster state has been processed #23037 (issue: #22828)
Highlighting
  • Add support for fragment_length in the unified highlighter #23431
  • Add BreakIteratorBoundaryScanner support #23248
Index APIs
  • Wildcard cluster names for cross cluster search #23985 (issue: #23893)
Ingest
  • Lazy load the geoip databases #23337
Internal
  • Add a dedicated TransportRemoteInfoAction for consistency #24040 (issue: #23969)
  • Simplify sorted top docs merging in SearchPhaseController #23881
  • Synchronized CollapseTopFieldDocs with lucenes relatives #23854
  • Cleanup SearchPhaseController interface #23844
  • Do not create String instances in Strings methods accepting StringBuilder #22907
Java API
  • Added types options to DeleteByQueryRequest #23265 (issue: #21984)
Java High Level REST Client
  • Convert suggestion response parsing to use NamedXContentRegistry #23355
  • UpdateRequest implements ToXContent #23289
  • Add javadoc for DocWriteResponse.Builders #23267
  • Expose WriteRequest.RefreshPolicy string representation #23106
  • Use typed_keys parameter to prefix suggester names by type in search responses #23080 (issue: #22965)
  • Add parsing methods to BulkItemResponse #22859
Logging
  • Warn on not enough masters during election #20063 (issue: #8362)
Mapping
  • Improve error message for ipv6 on legacy ip fields #23136 (issue: #23126)
Nested Docs
  • Avoid adding unnecessary nested filters when ranges are used. #23427
Network
  • Adjust default Netty receive predictor size to 64k #23542 (issue: #23185)
  • Keep the pipeline handler queue small initially #23335
  • Set network receive predictor size to 32kb #23284 (issue: #23185)
  • TransportService.connectToNode should validate remote node ID #22828 (issue: #22194)
Packaging
  • Introduce Java version check #23194 (issue: #21102)
  • Cleanup some things after removal of joda-time hack #18959
Percolator
  • Allowing range queries with now ranges inside percolator queries #23921 (issue: #23859)
  • Add term extraction support for MultiPhraseQuery #23176
Plugin Discovery EC2
  • Settings: Migrate ec2 discovery sensitive settings to elasticsearch keystore #23961 (issue: #22475)
Plugin Lang Painless
  • Allow painless to load stored fields #24290
  • Start on custom whitelists for Painless #23563
  • Fix Painless’s implementation of interfaces returning primitives #23298 (issue: #22983)
  • Allow painless to implement more interfaces #22983
Plugin Repository Azure
  • Add Backoff policy to azure repository #23387 (issue: #22728)
Plugin Repository S3
  • Removes the retry mechanism from the S3 blob store #23952 (issue: #22845)
  • S3 Repository: Eagerly load static settings #23910
Plugins
  • Modify permissions dialog for plugins #23742
  • Plugins: Add plugin cli specific exit codes #23599 (issue: #15295)
  • Plugins: Output better error message when existing plugin is incompatible #23562 (issue: #20691)
Query DSL
  • Make it possible to validate a query on all shards instead of a single random shard #23697 (issue: #18254)
REST
  • Validate top-level keys when parsing mget requests #23746 (issue: #23720)
  • Cluster stats should not render empty http/transport types #23735
  • Add parameter to prefix aggs name with type in search responses #22965
Search
  • Set shard count limit to unlimited #24012
  • Streamline shard index availability in all SearchPhaseResults #23788
  • Search took time should use a relative clock #23662
  • Prevent negative from parameter in SearchSourceBuilder #23358 (issue: #23324)
  • Remove unnecessary result sorting in SearchPhaseController #23321
  • Expose batched_reduce_size via _search #23288 (issue: #23253)
  • Adding fromXContent to Suggest and Suggestion class #23226 (issue: #23202)
  • Adding fromXContent to Suggestion.Entry and subclasses #23202
  • Add CollapseSearchPhase as a successor for the FetchSearchPhase #23165
  • Integrate IndexOrDocValuesQuery. #23119
  • Detach SearchPhases from AbstractSearchAsyncAction #23118
  • Fix GraphQuery expectation after Lucene upgrade to 6.5 #23117 (issue: #23102)
  • Nested queries should avoid adding unnecessary filters when possible. #23079 (issue: #20797)
  • Add xcontent parsing to completion suggestion option #23071
  • Add xcontent parsing to suggestion options #23018
  • Separate reduce (aggs, suggest and profile) from merging fetched hits #23017
Settings
  • Add secure file setting to keystore #24001
  • Add a setting which specifies a list of setting #23883
  • Add a property to mark setting as final #23872
  • Remove obsolete index setting index.version.minimum_compatible. #23593
  • Provide a method to retrieve a closeable char[] from a SecureString #23389
  • Update indices settings api to support CBOR and SMILE format #23309 (issues: #23242, #23245)
  • Improve setting deprecation message #23156 (issue: #22849)
Snapshot/Restore
  • Change snapshot status error to use generic SnapshotException #24355 (issue: #24225)
Stats
  • Add cross-cluster search remote cluster info API #23969 (issue: #23925)
Task Manager
  • Allow task to be unregistered by ClusterStateApplier #23931
  • Limit IndexRequest toString() length #22832

Bug fixesedit

Aggregations
  • Align behavior HDR percentiles iterator with percentile() method #24206
  • The filter and significant_terms aggregations should parse the filter as a filter, not a query. #23797
  • Completion suggestion should also consider text if prefix/regex is missing #23451 (issue: #23340)
  • Fixes the per term error in the terms aggregation #23399
  • Fixes terms error count for multiple reduce phases #23291 (issue: #23286)
  • Restore support for the include/pattern syntax. #23140 (issue: #22933)
Bulk
CRUD
Cluster
  • Don’t set local node on cluster state used for node join validation #23311 (issues: #21830, #3, #4, #6, #9)
  • Allow a cluster state applier to create an observer and wait for a better state #23132 (issue: #21817)
  • Cluster allocation explain to never return empty response body #23054
Core
  • Check for default.path.data included in path.data #24285 (issue: #24283)
  • Improve performance of extracting warning value #24114 (issue: #24018)
  • Reject duplicate settings on the command line #24053
  • Restrict build info loading to ES jar, not any jar #24049 (issue: #21955)
Discovery
  • ZenDiscovery - only validate min_master_nodes values if local node is master #23915 (issue: #23695)
Index APIs
  • Fixes restore of a shrunken index when initial recovery node is gone #24322 (issue: #24257)
  • Honor update request timeout #23825
Ingest
  • Improve missing ingest processor error #23379 (issue: #23392)
  • update _ingest.timestamp to use new ZonedDateTime #23174 (issue: #23168)
Inner Hits
  • Replace NestedChildrenQuery with ParentChildrenBlockJoinQuery #24016 (issue: #24009)
  • Changed DisMaxQueryBuilder to extract inner hits from leaf queries #23512 (issue: #23482)
Internal
  • Add infrastructure to mark contexts as system contexts #23830
  • Always restore the ThreadContext for operations delayed due to a block #23349
Java High Level REST Client
  • Correctly parse BulkItemResponse.Failure’s status #23432
Java REST Client
  • Make buffer limit configurable in HeapBufferedConsumerFactory #23970 (issue: #23958)
  • RestClient asynchronous execution should not throw exceptions #23307
Mapping
  • Preserve response headers when creating an index #23950 (issue: #23947)
  • Improves disabled fielddata error message #23841 (issue: #22768)
  • Switch include_in_all in multifield to warning #23656 (issues: #21971, #23654)
  • Fix MapperService StackOverflowError #23605 (issue: #23604)
  • Fix NPE with scaled floats stats when field is not indexed #23528 (issue: #23487)
Network
  • Fix possible hang in local transport when nodes get concurrently disconnected #23962 (issue: #23942)
  • Respect promises on pipelined responses #23317 (issues: #23310, #23322)
  • Ensure that releasing listener is called #23310
Packaging
  • Fall back to non-atomic move when removing plugins #23548 (issue: #35)
Percolator
  • Fix memory leak when percolator uses bitset or field data cache #24115 (issue: #24108)
Plugin Ingest Attachment
Plugin Lang Painless
  • Fix painless’s regex lexer and error messages #23634
  • Replace Painless’s Cast with casting strategies #23369
  • Fix Bad Casts In Painless #23282 (issue: #23238)
Plugin Repository Azure
  • Azure blob store’s readBlob() method first checks if the blob exists #23483 (issue: #23480)
Plugin Repository S3
  • Handle BlobPath’s trailing separator case. Add test cases to BlobPathTests.java #23091
Plugins
  • Fix delete of plugin directory on remove plugin #24266 (issue: #24252)
  • Use a marker file when removing a plugin #24252 (issue: #24231)
Query DSL
  • FuzzyQueryBuilder should error when parsing array of values #23762 (issue: #23759)
REST
  • [API] change wait_for_completion default according to docs #23672
  • Deprecate request_cache for clear-cache #23638 (issue: #22748)
  • HTTP transport stashes the ThreadContext instead of the RestController #23456
  • Ensure we try to autodetect content type for handlers that support plain text #23452
  • Fix date format in warning headers #23418 (issue: #23275)
  • Align REST specs for HEAD requests #23313 (issue: #21125)
  • Correct warning header to be compliant #23275 (issue: #22986)
  • Fix get HEAD requests #23186 (issue: #21125)
  • Fix search scroll request with a plain text body #23183 (issue: #22691)
  • Handle bad HTTP requests #23153 (issue: #23034)
  • Fix get source HEAD requests #23151 (issue: #21125)
  • Properly encode location header #23133 (issues: #21057, #23115)
  • Fix template HEAD requests #23130 (issue: #21125)
  • Fix index HEAD requests #23112 (issue: #21125)
  • Fix alias HEAD requests #23094 (issue: #21125)
Recovery
  • Provide target allocation id as part of start recovery request #24333 (issue: #24167)
Reindex API
  • Fix throttled reindex_from_remote #23953 (issues: #23828, #23945)
  • Fix reindex with a remote source on a version before 2.0.0 #23805
  • Make reindex wait for cleanup before responding #23677 (issue: #23653)
Scripting
  • Remove unnecessary Groovy deprecation logging #23410 (issue: #23401)
  • Convert script/template objects to json format internally #23308 (issue: #23245)
  • Script: Fix value of ctx._now to be current epoch time in milliseconds #23175 (issue: #23169)
Search
  • Cross Cluster Search: propagate original indices per cluster #24328
  • Query string default field #24214
  • Speed up parsing of large terms queries. #24210
  • IndicesQueryCache should delegate the scorerSupplier method. #24209
  • Fork LRUQueryCache from Lucene to work around LUCENE-7749 #24207
  • Disable graph analysis at query time for shingle and cjk filters producing tokens of different size #23920 (issue: #23918)
  • Fix cross-cluster remote node gateway attributes #23863
  • Use a fixed seed for computing term hashCode in TermsSliceQuery #23795
  • Honor max concurrent searches in multi-search #23538 (issue: #23527)
  • Avoid stack overflow in multi-search #23527 (issue: #23523)
  • Fix query_string_query to transform "foo:*" in an exists query on the field name #23433 (issue: #23356)
  • Factor out filling of TopDocs in SearchPhaseController #23380 (issues: #19356, #23357)
  • Replace blocking calls in ExpandCollapseSearchResponseListener by asynchronous requests #23053 (issue: #23048)
Search Templates
  • No longer add illegal content type option to stored search templates #24251 (issue: #24227)
Settings
  • Do not set path.data in environment if not set #24132 (issue: #24099)
  • Correct handling of default and array settings #24074 (issues: #23981, #24052)
  • Fix merge scheduler config settings #23391
  • Settings: Fix keystore cli prompting for yes/no to handle console returning null #23320
Similarities
  • Fix similarity upgrade when "default" similarity is overridden #23163
Snapshot/Restore
  • Fixes maintaining the shards a snapshot is waiting on #24289
  • Fixes snapshot status on failed snapshots #23833 (issue: #23716)
  • Fixes snapshot deletion handling on in-progress snapshot failure #23703 (issue: #23663)
  • Prioritize listing index-N blobs over index.latest in reading snapshots #23333
Stats
  • Avoid overflow when computing total FS stats #23641
  • Handle existence of cgroup version 2 hierarchy #23493 (issue: #23486)
  • Handle long overflow when adding paths' totals #23293 (issue: #23093)
  • Fix control group pattern #23219 (issue: #23218)
  • Fix total disk bytes returning negative value #23093

Regressionsedit

Bulk

Upgradesedit

Aggregations
Core
  • Upgrade to Lucene 6.5.0 #23750
  • Upgrade from JNA 4.2.2 to JNA 4.4.0 #23636
  • Upgrade to lucene-6.5.0-snapshot-d00c5ca #23385
  • Upgrade to lucene-6.5.0-snapshot-f919485. #23087
Logging
  • Upgrade to Log4j 2.8.2 #23995
Network
Plugin Repository Azure