[[release-notes-5.0.0-alpha5]]
== 5.0.0-alpha5 Release Notes

Also see <<breaking-changes-5.0>>.

IMPORTANT: This is an alpha release and is intended for _testing purposes only_. Indices created in this version will *not be compatible with Elasticsearch 5.0.0 GA*. Upgrading 5.0.0-alpha5 to any other version is not supported.

[IMPORTANT]
.Known networking bug in 5.0.0-alpha5
======================================================

There is a major bug in the new Netty4 implementation in this release which
affects any REST requests greater than 1024 bytes in size, and which will
generate an exception similar to the following:

[source,txt]
----
[WARN ][http.netty4] [wtOV9Vb] caught exception while handling client http traffic, closing connection [id: 0x1320b717, L:/0:0:0:0:0:0:0:1:9200 - R:/0:0:0:0:0:0:0:1:54732]
java.lang.UnsupportedOperationException: unsupported message type: DefaultFullHttpResponse (expected: ByteBuf, FileRegion)
----

This is due to incorrect handling of the `Expect` HTTP header, and it can be
worked around in one of three ways:

* Use a client which does not add `Expect` headers (including the official clients).

* Pass a blank `Except` header, e.g.
+
[source,sh]
----
curl -H 'Expect:' ...
----

* Use Netty3 for the HTTP layer by passing the following setting at startup:
+
[source,sh]
----
./bin/elasticsearch -Ehttp.type=netty3
----

======================================================

[[breaking-5.0.0-alpha5]]
[float]
=== Breaking changes

CAT API::
* Improve cat thread pool API {pull}19721[#19721] (issue: {issue}19590[#19590])

Cluster::
* Persistent Node Ids {pull}19140[#19140] (issue: {issue}17811[#17811])

Core::
* Keep input time unit when parsing TimeValues {pull}19102[#19102]

Exceptions::
* Die with dignity {pull}19272[#19272] (issue: {issue}19231[#19231])

Index APIs::
* Removes write consistency level across replication action APIs in favor of wait_for_active_shards {pull}19454[#19454] (issue: {issue}18985[#18985])

Scripting::
* Remove deprecated 1.x script and template syntax {pull}19387[#19387] (issue: {issue}13729[#13729])

Search::
* Rename `fields` to `stored_fields` and add `docvalue_fields` {pull}18992[#18992] (issue: {issue}18943[#18943])

Settings::
* Persistent Node Names {pull}19456[#19456] (issue: {issue}19140[#19140])
* Remove support for properties {pull}19398[#19398] (issues: {issue}19388[#19388], {issue}19391[#19391])



[[breaking-java-5.0.0-alpha5]]
[float]
=== Breaking Java changes

CRUD::
* Removing isCreated and isFound from the Java API {pull}19645[#19645] (issues: {issue}19566[#19566], {issue}19631[#19631])

Internal::
* Clean up BytesReference {pull}19196[#19196]

Java API::
* Add a dedicated client/transport project for transport-client {pull}19435[#19435] (issue: {issue}19412[#19412])

Network::
* Factor out abstract TCPTransport* classes to reduce the netty footprint {pull}19096[#19096]

Plugins::
* Migrate query registration from push to pull {pull}19376[#19376]
* Add components getter as bridge between guice and new plugin init world {pull}19371[#19371]
* Remove CustomNodeAttributes extension point {pull}19348[#19348]
* Add RepositoryPlugin interface for registering snapshot repositories {pull}19324[#19324]
* Simplified repository api for snapshot/restore {pull}19292[#19292]
* Switch most search extensions from push to pull {pull}19238[#19238]
* Move RestHandler registration to ActionModule and ActionPlugin {pull}19165[#19165]
* Pull actions from plugins {pull}19108[#19108]
* Switch analysis from push to pull {pull}19073[#19073]
* Remove guice from Mapper plugins {pull}19018[#19018]

Scripting::
* Remove o.e.script.Template class and move template query to lang-mustache module {pull}19425[#19425] (issue: {issue}16314[#16314])

Settings::
* Remove `node.mode` and `node.local` settings {pull}19428[#19428]

Snapshot/Restore::
* Removes extra writeBlob method in BlobContainer {pull}19727[#19727] (issue: {issue}18528[#18528])



[[deprecation-5.0.0-alpha5]]
[float]
=== Deprecations

CRUD::
* Deprecate found and created in delete and index rest responses {pull}19633[#19633]

Plugin Discovery Azure Classic::
* Deprecate discovery-azure and rename it to discovery-azure-classic {pull}19186[#19186] (issue: {issue}19144[#19144])

Templates::
* Deprecate template query {pull}19607[#19607] (issue: {issue}19390[#19390])



[[feature-5.0.0-alpha5]]
[float]
=== New features

Aggregations::
* Split regular histograms from date histograms. {pull}19551[#19551] (issues: {issue}4847[#4847], {issue}8082[#8082])

Circuit Breakers::
* Circuit break on aggregation bucket numbers with request breaker {pull}19394[#19394] (issue: {issue}14046[#14046])

Ingest::
* ingest-useragent plugin {pull}19074[#19074]

Java REST Client::
* Introduce async performRequest method {pull}19400[#19400]

Mapping::
* Add `scaled_float`. {pull}19264[#19264] (issues: {issue}15939[#15939], {issue}1941[#1941])

Plugin Repository S3::
* Add support for path_style_access {pull}15114[#15114]

Reindex API::
* Reindex from remote {pull}18585[#18585] (issue: {issue}17447[#17447])

Translog::
* Add `elasticsearch-translog` CLI tool with `truncate` command {pull}19342[#19342] (issue: {issue}19123[#19123])



[[enhancement-5.0.0-alpha5]]
[float]
=== Enhancements

Aggregations::
* Make the heuristic to compute the default shard size less aggressive. {pull}19659[#19659]
* Add _bucket_count option to buckets_path {pull}19571[#19571] (issue: {issue}19553[#19553])
* Remove AggregationStreams {pull}19507[#19507]
* Migrate serial_diff aggregation to NamedWriteable {pull}19483[#19483]
* Migrate most remaining pipeline aggregations to NamedWriteable {pull}19480[#19480]
* Migrate moving_avg pipeline aggregation to NamedWriteable {pull}19420[#19420]
* Migrate matrix_stats to NamedWriteable {pull}19418[#19418]
* Migrate derivative pipeline aggregation to NamedWriteable {pull}19407[#19407]
* Migrate top_hits, histogram, and ip_range aggregations to NamedWriteable {pull}19375[#19375]
* Migrate nested, reverse_nested, and children aggregations to NamedWriteable {pull}19374[#19374]
* Migrate geohash_grid and geo_bounds aggregations to NamedWriteable {pull}19372[#19372]
* Clean up significant terms aggregation results {pull}19365[#19365]
* Migrate range, date_range, and geo_distance aggregations to NamedWriteable {pull}19321[#19321]
* Migrate terms aggregation to NamedWriteable {pull}19277[#19277]
* Migrate sampler and missing aggregations to NamedWriteable {pull}19259[#19259]
* Migrate global, filter, and filters aggregation to NamedWriteable {pull}19220[#19220]
* Migrate the cardinality, scripted_metric, and geo_centroid aggregations to NamedWriteable {pull}19219[#19219]
* Use a static default precision for the cardinality aggregation. {pull}19215[#19215]
* Migrate more aggregations to NamedWriteable {pull}19199[#19199]
* Migrate stats and extended stats to NamedWriteable {pull}19198[#19198]
* Migrate sum, min, and max aggregations over to NamedWriteable {pull}19194[#19194]
* Start migration away from aggregation streams {pull}19097[#19097]

Analysis::
* Specify custom char_filters/tokenizer/token_filters in the analyze API {pull}15671[#15671] (issue: {issue}8878[#8878])

CAT API::
* Includes the index UUID in the _cat/indices API {pull}19204[#19204] (issue: {issue}19132[#19132])

CRUD::
* #19664 Renaming operation to result and reworking responses  {pull}19704[#19704] (issue: {issue}19664[#19664])
* Adding _operation field to index, update, delete response. {pull}19566[#19566] (issues: {issue}19267[#19267], {issue}9642[#9642], {issue}9736[#9736])

Cache::
* Enable option to use request cache for size > 0 {pull}19472[#19472]

Cluster::
* Batch process node left and node failure {pull}19289[#19289] (issue: {issue}19282[#19282])
* Index creation waits for write consistency shards {pull}18985[#18985]
* Inline reroute with process of node join/master election {pull}18938[#18938] (issue: {issue}17270[#17270])

Core::
* Makes index creation more friendly {pull}19450[#19450] (issue: {issue}9126[#9126])
* Clearer error when handling fractional time values {pull}19158[#19158] (issue: {issue}19102[#19102])

Discovery::
* Do not log cluster service errors at after joining a master {pull}19705[#19705]

Exceptions::
* Make NotMasterException a first class citizen {pull}19385[#19385]
* Do not catch throwable {pull}19231[#19231]

Geo::
* GeoBoundingBoxQueryBuilder should throw IAE when topLeft and bottomRight are the same coordinate {pull}18668[#18668] (issues: {issue}18458[#18458], {issue}18631[#18631])

Ingest::
* Add REST _ingest/pipeline to get all pipelines {pull}19603[#19603] (issue: {issue}19585[#19585])
* Show ignored errors in verbose simulate result {pull}19404[#19404] (issue: {issue}19319[#19319])
* update foreach processor to only support one applied processor. {pull}19402[#19402] (issue: {issue}19345[#19345])
* Skip the execution of an empty pipeline {pull}19200[#19200] (issue: {issue}19192[#19192])

Internal::
* Make Priority an enum {pull}19448[#19448]
* Snapshot UUIDs in blob names {pull}19421[#19421] (issues: {issue}18156[#18156], {issue}18815[#18815], {issue}19002[#19002], {issue}7540[#7540])
* Add RestController method for deprecating in one step {pull}19343[#19343]
* Tighten ensure atomic move cleanup {pull}19309[#19309] (issue: {issue}19036[#19036])
* Enable checkstyle ModifierOrder {pull}19214[#19214]
* Expose task information from NodeClient {pull}19189[#19189]
* Changed rest handler interface to take NodeClient {pull}19170[#19170]
* Deprecate ExceptionsHelper.detailedMessage {pull}19160[#19160] (issue: {issue}19069[#19069])
* Factor out ChannelBuffer from BytesReference {pull}19129[#19129]
* Cleanup Compressor interface {pull}19125[#19125]
* Require executor name when calling scheduleWithFixedDelay {pull}17538[#17538]

Java API::
* Start from a random node number so that clients do not overload the first node configured {pull}14143[#14143]

Java REST Client::
* Add response body to ResponseException error message {pull}19653[#19653] (issue: {issue}19653[#19653])
* Simplify Sniffer initialization and automatically create the default HostsSniffer {pull}19599[#19599]
* Remove duplicate dependency declaration for http client {pull}19580[#19580] (issue: {issue}19281[#19281])
* Add callback to customize http client settings {pull}19373[#19373]
* Rest Client: add short performRequest method variants without params and/or body {pull}19340[#19340] (issue: {issue}19312[#19312])

Logging::
* Add log message about enforcing bootstrap checks {pull}19451[#19451]
* Improve logging for batched cluster state updates {pull}19255[#19255]
* Send HTTP Warning Header(s) for any Deprecation Usage from a REST request {pull}17804[#17804] (issue: {issue}17687[#17687])

Mapping::
* Elasticsearch should reject dynamic templates with unknown `match_mapping_type`. {pull}17285[#17285] (issue: {issue}16945[#16945])

Network::
* Explicitly tell Netty to not use unsafe {pull}19786[#19786] (issues: {issue}19562[#19562], {issue}5624[#5624])
* Enable Netty 4 extensions {pull}19767[#19767] (issue: {issue}19526[#19526])
* Modularize netty {pull}19392[#19392]
* Simplify TcpTransport interface by reducing send code to a single send method {pull}19223[#19223]

Percolator::
* Also support query term extract for queries wrapped inside a FunctionScoreQuery {pull}19184[#19184]
* Add support for synonym query to percolator query term extraction {pull}19066[#19066]

Plugin Discovery EC2::
* Use `DefaultAWSCredentialsProviderChain` AWS SDK class for credentials {pull}19561[#19561] (issue: {issue}19556[#19556])
* Support new Asia Pacific (Mumbai) ap-south-1 AWS region {pull}19112[#19112] (issue: {issue}19110[#19110])

Plugin Discovery GCE::
* Allow `_gce_` network when not using discovery gce {pull}15765[#15765] (issue: {issue}15724[#15724])

Plugin Lang Painless::
* Change Painless Tree Structure for Variable/Method Chains {pull}19459[#19459]
* Add replaceAll and replaceFirst {pull}19070[#19070]

Plugin Mapper Size::
* Add doc values support to the _size field in the mapper-size plugin {pull}19217[#19217] (issue: {issue}18334[#18334])

Plugins::
* Add ScriptService to dependencies available for plugin components {pull}19770[#19770]
* Log one plugin info per line {pull}19441[#19441]
* Make rest headers registration pull based {pull}19440[#19440]
* Add resource watcher to services available for plugin components {pull}19401[#19401]
* Add some basic services to createComponents for plugins {pull}19380[#19380]
* Make plugins closeable {pull}19137[#19137]
* Plugins: Add status bar on download {pull}18695[#18695]

Query DSL::
* Allow empty json object in request body in `_count` API {pull}19595[#19595] (issue: {issue}19422[#19422])

REST::
* Add Location header to the index, update, and create APIs {pull}19509[#19509] (issue: {issue}19079[#19079])
* Add support for `wait_for_events` to the `_cluster/health` REST endpoint {pull}19432[#19432] (issue: {issue}19419[#19419])
* Rename Search Template REST spec names {pull}19178[#19178]

Recovery::
* Non-blocking primary relocation hand-off {pull}19013[#19013] (issues: {issue}15900[#15900], {issue}18553[#18553])

Reindex API::
* Only ask for `_version` we need it {pull}19693[#19693] (issue: {issue}19135[#19135])
* Use fewer threads when reindexing-from-remote {pull}19636[#19636]
* Support authentication with reindex-from-remote {pull}19310[#19310]
* Support requests_per_second=-1 to mean no throttling in reindex {pull}19101[#19101] (issue: {issue}19089[#19089])

Scripting::
* Remove ClusterState from compile api {pull}19136[#19136]
* Mustache: Render Map as JSON {pull}18856[#18856] (issue: {issue}18970[#18970])

Search::
* Limit batch size when scrolling {pull}19367[#19367] (issue: {issue}19249[#19249])
* Record method counts while profiling query components {pull}18302[#18302]

Settings::
* Validates new dynamic settings from the current state {pull}19122[#19122] (issue: {issue}19046[#19046])

Snapshot/Restore::
* BlobContainer#writeBlob no longer can overwrite a blob {pull}19749[#19749] (issue: {issue}15579[#15579])
* More resilient blob handling in snapshot repositories {pull}19706[#19706] (issues: {issue}18156[#18156], {issue}18815[#18815], {issue}19421[#19421], {issue}7540[#7540])
* Adding repository index generational files {pull}19002[#19002] (issue: {issue}18156[#18156])
* Raised IOException on deleteBlob {pull}18815[#18815] (issue: {issue}18530[#18530])

Stats::
* Add missing field type in the FieldStats response. {pull}19241[#19241] (issue: {issue}17750[#17750])
* Expose the ClusterInfo object in the allocation explain output {pull}19106[#19106] (issue: {issue}14405[#14405])



[[bug-5.0.0-alpha5]]
[float]
=== Bug fixes

Aggregations::
* Undeprecates `aggs` in the search request {pull}19674[#19674] (issue: {issue}19504[#19504])
* Change how `nested` and `reverse_nested` aggs know about their nested depth level {pull}19550[#19550] (issues: {issue}11749[#11749], {issue}12410[#12410])
* Make ExtendedBounds immutable {pull}19490[#19490] (issue: {issue}19481[#19481])
* Fix potential AssertionError with include/exclude on terms aggregations. {pull}19252[#19252] (issue: {issue}18575[#18575])
* Pass resolved extended bounds to unmapped histogram aggregator {pull}19085[#19085] (issue: {issue}19009[#19009])
* Fix "key_as_string" for date histogram and epoch_millis/epoch_second format with time zone {pull}19043[#19043] (issue: {issue}19038[#19038])

Allocation::
* Fix NPE when initializing replica shard has no UnassignedInfo {pull}19491[#19491] (issue: {issue}19488[#19488])
* Make shard store fetch less dependent on the current cluster state, both on master and non data nodes {pull}19044[#19044] (issue: {issue}18938[#18938])

Analysis::
* Fix analyzer alias processing {pull}19506[#19506] (issue: {issue}19163[#19163])

CAT API::
* Fixes cat tasks operation in detailed mode {pull}19759[#19759] (issue: {issue}19755[#19755])
* Add index pattern wildcards support to _cat/shards {pull}19655[#19655] (issue: {issue}19634[#19634])

Cluster::
* Allow routing table to be filtered by index pattern {pull}19688[#19688]
* Use executor's describeTasks method to log task information in cluster service {pull}19531[#19531]

Core::
* Makes `m` case sensitive in TimeValue {pull}19649[#19649] (issue: {issue}19619[#19619])
* Guard against negative result from FileStore.getUsableSpace when picking data path for a new shard {pull}19554[#19554]
* Handle rejected execution exception on reschedule {pull}19505[#19505]

Dates::
* Make sure TimeIntervalRounding is monotonic for increasing dates {pull}19020[#19020]

Geo::
* Incomplete results when using geo_distance for large distances {pull}17578[#17578]

Highlighting::
* Plain highlighter should ignore parent/child queries {pull}19616[#19616] (issue: {issue}14999[#14999])
* Let fast vector highlighter also extract terms from the nested query's inner query. {pull}19337[#19337] (issue: {issue}19265[#19265])

Index APIs::
* Fixes active shard count check in the case of `all` shards {pull}19760[#19760]
* Add zero-padding to auto-generated rollover index name increment {pull}19610[#19610] (issue: {issue}19484[#19484])

Ingest::
* Fix NPE when simulating a pipeline with no id {pull}19650[#19650]
* Change foreach processor to use ingest metadata for array element {pull}19609[#19609] (issue: {issue}19592[#19592])
* No other processors should be executed after on_failure is called {pull}19545[#19545]
* rethrow script compilation exceptions into ingest configuration exceptions {pull}19318[#19318]
* Rename from `ingest-useragent` plugin to `ingest-user-agent` and its processor from `useragent` to `user_agent` {pull}19261[#19261]

Inner Hits::
* Ensure that that InnerHitBuilder uses rewritten queries {pull}19360[#19360] (issue: {issue}19353[#19353])

Internal::
* Priority values should be unmodifiable {pull}19447[#19447]
* Extract AbstractBytesReferenceTestCase {pull}19141[#19141]

Java REST Client::
* Rest Client: add slash to log line when missing between host and uri {pull}19325[#19325] (issue: {issue}19314[#19314])
* Rest Client: HostsSniffer to set http as default scheme {pull}19306[#19306]

Logging::
* Only log running out of slots when out of slots {pull}19637[#19637]

Mapping::
* Mappings: Fix detection of metadata fields in documents {pull}19765[#19765]
* Fix not_analyzed string fields to error when position_increment_gap is set {pull}19510[#19510]
* Automatically created indices should honor `index.mapper.dynamic`. {pull}19478[#19478] (issue: {issue}17592[#17592])

Network::
* Verify lower level transport exceptions don't bubble up on disconnects {pull}19518[#19518] (issue: {issue}19096[#19096])

Packaging::
* Disable service in pre-uninstall {pull}19328[#19328]

Parent/Child::
*  Make sure that no `_parent#null` gets introduces as default _parent mapping {pull}19470[#19470] (issue: {issue}19389[#19389])

Plugin Discovery Azure Classic::
* Make discovery-azure plugin work again {pull}19062[#19062] (issues: {issue}15630[#15630], {issue}18637[#18637])

Plugin Discovery EC2::
* Fix EC2 discovery settings {pull}18690[#18690] (issues: {issue}18652[#18652], {issue}18662[#18662])

Plugin Discovery GCE::
* Fix NPE when GCE region is empty {pull}19176[#19176] (issue: {issue}16967[#16967])

Plugin Repository Azure::
* Register group setting for repository-azure accounts {pull}19086[#19086]

Plugin Repository S3::
* Add missing permission to repository-s3 {pull}19128[#19128] (issues: {issue}18539[#18539], {issue}19121[#19121])
* Fix repository S3 Settings and add more tests {pull}18703[#18703] (issues: {issue}18662[#18662], {issue}18690[#18690])

Query DSL::
* Throw ParsingException if a query is wrapped in an array {pull}19750[#19750] (issue: {issue}12887[#12887])
* Restore parameter name auto_generate_phrase_queries {pull}19514[#19514] (issue: {issue}19512[#19512])

REST::
* Fixes CORS handling so that it uses the defaults {pull}19522[#19522] (issue: {issue}19520[#19520])

Recovery::
* Move `reset recovery` into RecoveriesCollection {pull}19466[#19466] (issue: {issue}19473[#19473])
* Fix replica-primary inconsistencies when indexing during primary relocation with ongoing replica recoveries {pull}19287[#19287] (issue: {issue}19248[#19248])

Search::
* Don't recursively count children profile timings {pull}19397[#19397] (issue: {issue}18693[#18693])
* fix explain in function_score if no function filter matches {pull}19185[#19185]
* Fix NPEs due to disabled source {pull}18957[#18957]

Settings::
* Validate settings against dynamic updaters on the master {pull}19088[#19088] (issue: {issue}19046[#19046])

Stats::
* Fix serialization bug in allocation explain API. {pull}19494[#19494]
* Allocation explain: Also serialize `includeDiskInfo` field {pull}19492[#19492]

Store::
* Tighten up concurrent store metadata listing and engine writes {pull}19684[#19684] (issue: {issue}19416[#19416])
* Make static Store access shard lock aware {pull}19416[#19416] (issue: {issue}18938[#18938])
* Catch assertion errors on commit and turn it into a real exception {pull}19357[#19357] (issue: {issue}19356[#19356])



[[upgrade-5.0.0-alpha5]]
[float]
=== Upgrades

Network::
* Dependencies: Upgrade to netty 4.1.4 {pull}19689[#19689]
* Introduce Netty 4 {pull}19526[#19526] (issue: {issue}3226[#3226])
* Upgrade to netty 3.10.6.Final {pull}19235[#19235]

