[[release-notes-5.0.0-alpha4]]
== 5.0.0-alpha4 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-alpha4 to any other version is not supported.

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

Aggregations::
* Remove size 0 options in aggregations {pull}18854[#18854] (issue: {issue}18838[#18838])

CRUD::
* Wait for changes to be visible by search {pull}17986[#17986] (issue: {issue}1063[#1063])

Core::
* Remove cluster name from data path {pull}18554[#18554] (issue: {issue}17810[#17810])

Inner Hits::
* Also do not serialize `_index` key in search response for parent/child inner hits {pull}19011[#19011]
* Don't include `_id`, `_type` and `_index` keys in search response for inner hits {pull}18995[#18995] (issue: {issue}18091[#18091])
* Nested inner hits shouldn't use relative paths {pull}18567[#18567] (issue: {issue}16653[#16653])

Mapping::
* Remove `_timestamp` and `_ttl` on 5.x indices. {pull}18980[#18980] (issue: {issue}18280[#18280])

Packaging::
* Remove allow running as root {pull}18694[#18694] (issue: {issue}18688[#18688])

Search::
* Remove only node preference {pull}18875[#18875] (issue: {issue}18822[#18822])
* Add search preference to prefer multiple nodes {pull}18872[#18872] (issue: {issue}18822[#18822])

Settings::
* Rename boostrap.mlockall to bootstrap.memory_lock {pull}18669[#18669]

Snapshot/Restore::
* Change the default of `include_global_state` from true to false for snapshot restores {pull}18773[#18773] (issue: {issue}18569[#18569])



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

Core::
* Register thread pool settings {pull}18674[#18674] (issues: {issue}18613[#18613], {issue}9216[#9216])

Highlighting::
* Register Highlighter instances instead of classes {pull}18859[#18859]

Internal::
* Cleanup ClusterService dependencies and detached from Guice {pull}18941[#18941]
* Simplify SubFetchPhase interface {pull}18881[#18881]
* Simplify FetchSubPhase registration and detach it from Guice {pull}18862[#18862]

Java API::
* Remove setRefresh {pull}18752[#18752] (issue: {issue}1063[#1063])

Plugins::
* Fail to start if plugin tries broken onModule {pull}19025[#19025]
* Simplify ScriptModule and script registration {pull}18903[#18903]
* Cut over settings registration to a pull model {pull}18890[#18890]
* Plugins cleanup {pull}18594[#18594] (issue: {issue}18588[#18588])

Scripting::
* Move search template to lang-mustache module {pull}18765[#18765] (issue: {issue}17906[#17906])



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

Aggregations::
* Adds aggregation profiling to the profile API {pull}18414[#18414] (issue: {issue}10538[#10538])
* New Matrix Stats Aggregation module {pull}18300[#18300] (issue: {issue}16826[#16826])

Index APIs::
* Add rollover API to switch index aliases given some predicates {pull}18732[#18732] (issue: {issue}18647[#18647])

Java REST Client::
* Low level Rest Client {pull}18735[#18735] (issue: {issue}7743[#7743])

Mapping::
* Expose half-floats. {pull}18887[#18887]

Scroll::
* Add the ability to partition a scroll in multiple slices. {pull}18237[#18237] (issue: {issue}13494[#13494])

Store::
* Expose MMapDirectory.preLoad(). {pull}18880[#18880]
* Add primitive to shrink an index into a single shard {pull}18270[#18270]



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

Aggregations::
* Automatically set the collection mode to breadth_first in the terms aggregation when the cardinality of the field is unknown or smaller than the requested size. {pull}18779[#18779] (issue: {issue}9825[#9825])
* Rename PipelineAggregatorBuilder to PipelineAggregationBuilder. {pull}18677[#18677] (issue: {issue}18377[#18377])
* AggregatorBuilder and PipelineAggregatorBuilder do not need generics. {pull}18368[#18368] (issue: {issue}18133[#18133])

Allocation::
* Allow `_shrink` to N shards if source shards is a multiple of N {pull}18699[#18699]
* Only filter intial recovery (post API) when shrinking an index {pull}18661[#18661]
* Estimate shard size for shrinked indices {pull}18659[#18659]
* Only fail relocation target shard if failing source shard is a primary {pull}18574[#18574] (issue: {issue}16144[#16144])
* Simplify delayed shard allocation {pull}18351[#18351] (issue: {issue}18293[#18293])

Analysis::
* Add a MultiTermAwareComponent marker interface to analysis factories. {pull}19028[#19028] (issues: {issue}18064[#18064], {issue}9978[#9978])
* Add Flags Parameter for Char Filter {pull}18363[#18363] (issue: {issue}18362[#18362])

Cache::
* Cache FieldStats in the request cache {pull}18768[#18768] (issue: {issue}18717[#18717])

Cluster::
* Index creation does not cause the cluster health to go RED {pull}18737[#18737] (issues: {issue}9106[#9106], {issue}9126[#9126])
* Cluster Health class improvements {pull}18673[#18673]

Core::
* Read Elasticsearch manifest via URL {pull}18999[#18999] (issue: {issue}18996[#18996])
* Throw if the local node is not set {pull}18963[#18963] (issue: {issue}18962[#18962])
* Improve performance of applyDeletedShards {pull}18788[#18788] (issue: {issue}18776[#18776])
* Bootstrap check for OnOutOfMemoryError and seccomp {pull}18756[#18756] (issue: {issue}18736[#18736])

Dates::
* Improve TimeZoneRoundingTests error messages {pull}18895[#18895]
* Improve TimeUnitRounding for edge cases and DST transitions {pull}18589[#18589]

Expressions::
* improve date api for expressions/painless fields {pull}18658[#18658]

Index APIs::
* Add Shrink request source parser to parse create index request body {pull}18802[#18802]

Index Templates::
* Parse and validate mappings on index template creation {pull}8802[#8802] (issue: {issue}2415[#2415])

Ingest::
* Add `ignore_failure` option to all ingest processors {pull}18650[#18650] (issue: {issue}18493[#18493])
* new ScriptProcessor for Ingest {pull}18193[#18193]

Internal::
* Hot methods redux {pull}19016[#19016] (issue: {issue}16725[#16725])
* Remove forked joda time BaseDateTime class {pull}18953[#18953]
* Support optional ctor args in ConstructingObjectParser {pull}18725[#18725]
* Remove thread pool from page cache recycler {pull}18664[#18664] (issue: {issue}18613[#18613])

Java API::
* Switch QueryBuilders to new MatchPhraseQueryBuilder {pull}18753[#18753]

Logging::
* Throw IllegalStateException when handshake fails due to version or cluster mismatch {pull}18676[#18676]

Mapping::
* Upgrade `string` fields to `text`/`keyword` even if `include_in_all` is set. {pull}19004[#19004] (issue: {issue}18974[#18974])

Network::
* Exclude admin / diagnostic requests from HTTP request limiting {pull}18833[#18833] (issues: {issue}17951[#17951], {issue}18145[#18145])
* Do not start scheduled pings until transport start {pull}18702[#18702]

Packaging::
* Remove explicit parallel new GC flag {pull}18767[#18767]
* Use JAVA_HOME or java.exe in PATH like the Linux scripts do {pull}18685[#18685] (issue: {issue}4913[#4913])

Percolator::
* Add percolator query extraction support for dismax query {pull}18845[#18845]
* Improve percolate query performance by not verifying certain candidate matches {pull}18696[#18696]
* Improve percolator query term extraction {pull}18610[#18610]

Plugin Lang Painless::
* Painless Initializers {pull}19012[#19012]
* Add augmentation {pull}19003[#19003]
* Infer lambda arguments/return type {pull}18983[#18983]
* Fix explicit casts and improve tests. {pull}18958[#18958]
* Add lambda captures {pull}18954[#18954]
* improve Debugger to print code even if it hits exception {pull}18932[#18932] (issue: {issue}1[#1])
* Move semicolon hack into lexer {pull}18931[#18931]
* Add flag support to regexes {pull}18927[#18927]
* improve lambda syntax (allow single expression) {pull}18924[#18924]
* Remove useless dropArguments in megamorphic cache {pull}18913[#18913]
* non-capturing lambda support {pull}18911[#18911] (issue: {issue}18824[#18824])
* fix bugs in operators and more improvements for the dynamic case {pull}18899[#18899]
* improve unary operators and cleanup tests {pull}18867[#18867] (issue: {issue}18849[#18849])
* Add support for the find operator (=~) and the match operator (==~) {pull}18858[#18858]
* Remove casts and boxing for dynamic math {pull}18849[#18849] (issue: {issue}18847[#18847])
* Refactor def math {pull}18847[#18847]
* Add support for /regex/ {pull}18842[#18842]
* Array constructor references {pull}18831[#18831]
* Method references to user functions {pull}18828[#18828]
* Add } as a delimiter.  {pull}18827[#18827] (issue: {issue}18821[#18821])
* Add Lambda Stub Node {pull}18824[#18824]
* Add capturing method references {pull}18818[#18818] (issue: {issue}18748[#18748])
* Add Functions to Painless {pull}18810[#18810]
* Add Method to Get New MethodWriters {pull}18771[#18771]
* Static For Each {pull}18757[#18757]
* Method reference support {pull}18748[#18748] (issue: {issue}18578[#18578])
* Add support for the new Java 9 MethodHandles#arrayLength() factory {pull}18734[#18734]
* Improve painless compile-time exceptions {pull}18711[#18711] (issue: {issue}18600[#18600])
* add java.time packages to painless whitelist {pull}18621[#18621]
* Add Function Reference Stub to Painless {pull}18578[#18578]

Plugins::
* Add did-you-mean for plugin cli {pull}18942[#18942] (issue: {issue}18896[#18896])
* Plugins: Remove name() and description() from api {pull}18906[#18906]
* Emit nicer error message when trying to install unknown plugin {pull}18876[#18876] (issue: {issue}17226[#17226])

Query DSL::
* Treat zero token in `common` terms query as MatchNoDocsQuery {pull}18656[#18656]
* Handle empty query bodies at parse time and remove EmptyQueryBuilder {pull}17624[#17624] (issues: {issue}17540[#17540], {issue}17541[#17541])

REST::
* Adding status field in _msearch error request bodies {pull}18586[#18586] (issue: {issue}18013[#18013])

Recovery::
* index shard should be able to cancel check index on close. {pull}18839[#18839] (issue: {issue}12011[#12011])

Reindex API::
* Implement ctx.op = "delete" on _update_by_query and _reindex {pull}18614[#18614] (issue: {issue}18043[#18043])

Scripting::
*  Compile each Groovy script in its own classloader {pull}18918[#18918] (issue: {issue}18572[#18572])
* Include script field even if it value is null {pull}18384[#18384] (issue: {issue}16408[#16408])

Scroll::
* Add an index setting to limit the maximum number of slices allowed in a scroll request. {pull}18782[#18782]

Search::
* Change default similarity to BM25 {pull}18948[#18948] (issue: {issue}18944[#18944])
* Add a parameter to cap the number of searches the msearch api will concurrently execute {pull}18721[#18721]

Sequence IDs::
* Persist sequence number checkpoints {pull}18949[#18949] (issue: {issue}10708[#10708])
* Add sequence numbers to cat shards API {pull}18772[#18772]

Settings::
* Improve error message if a setting is not found {pull}18920[#18920] (issue: {issue}18663[#18663])
* Cleanup placeholder replacement {pull}17335[#17335]

Snapshot/Restore::
* Adds UUIDs to snapshots {pull}18228[#18228] (issue: {issue}18156[#18156])
* Clarify the semantics of the BlobContainer interface {pull}18157[#18157] (issue: {issue}15580[#15580])

Stats::
* Add total_indexing_buffer/_in_bytes to nodes info API {pull}18914[#18914] (issue: {issue}18651[#18651])
* Allow FieldStatsRequest to disable cache {pull}18900[#18900]
* Remove index_writer_max_memory stat from segment stats {pull}18651[#18651] (issues: {issue}14121[#14121], {issue}7440[#7440])
* Move DocStats under Engine to get more accurate numbers {pull}18587[#18587]

Task Manager::
* Fetch result when wait_for_completion {pull}18905[#18905]
* Create get task API that falls back to the .tasks index {pull}18682[#18682]
* Add ability to store results for long running tasks {pull}17928[#17928]

Translog::
* Beef up Translog testing with random channel exceptions {pull}18997[#18997]
* Do not replay into translog on local recovery {pull}18547[#18547]



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

Allocation::
* Fix recovery throttling to properly handle relocating non-primary shards {pull}18701[#18701] (issue: {issue}18640[#18640])

CAT API::
* Fix merge stats rendering in RestIndicesAction {pull}18720[#18720]

CRUD::
* Squash a race condition in RefreshListeners {pull}18806[#18806]

Circuit Breakers::
* Never trip circuit breaker in liveness request {pull}18627[#18627] (issue: {issue}17951[#17951])

Cluster::
* Fix block checks when no indices are specified {pull}19047[#19047] (issue: {issue}8105[#8105])
* Acknowledge index deletion requests based on standard cluster state acknowledgment {pull}18602[#18602] (issues: {issue}16442[#16442], {issue}18558[#18558])

Core::
* Throw exception if using a closed transport client {pull}18722[#18722] (issue: {issue}18708[#18708])

Dates::
* Fix invalid rounding value for TimeIntervalRounding close to DST transitions {pull}18800[#18800]
* Fix problem with TimeIntervalRounding on DST end {pull}18780[#18780]

Expressions::
* replace ScriptException with a better one {pull}18600[#18600]

Ingest::
* Fix ignore_failure behavior in _simulate?verbose and more cleanup {pull}18987[#18987]

Internal::
* Fix filtering of node ids for TransportNodesAction {pull}18634[#18634] (issue: {issue}18618[#18618])

Mapping::
* Better error message when mapping configures null {pull}18809[#18809] (issue: {issue}18803[#18803])
* Process dynamic templates in order. {pull}18638[#18638] (issues: {issue}18625[#18625], {issue}2401[#2401])

Packaging::
* Remove extra bin/ directory in bin folder {pull}18630[#18630]

Plugin Lang Painless::
* Fix compound assignment with string concats {pull}18933[#18933] (issue: {issue}18929[#18929])
* Fix horrible capture {pull}18907[#18907] (issue: {issue}18899[#18899])
* Fix Casting Bug {pull}18871[#18871]

Query DSL::
* Make parsing of bool queries stricter {pull}19052[#19052] (issue: {issue}19034[#19034])

REST::
* Get XContent params from request in Nodes rest actions {pull}18860[#18860] (issue: {issue}18794[#18794])

Reindex API::
* Fix a race condition in reindex's rethrottle {pull}18731[#18731] (issue: {issue}18744[#18744])

Search::
* Require timeout units when parsing query body {pull}19077[#19077] (issue: {issue}19075[#19075])
* Close SearchContext if query rewrite failed {pull}18727[#18727]

Settings::
* Register "cloud.node.auto_attributes" setting in EC2 discovery plugin {pull}18678[#18678]

Snapshot/Restore::
* Better handling of an empty shard's segments_N file {pull}18784[#18784] (issue: {issue}18707[#18707])

Stats::
* Fix sync flush total shards statistics {pull}18766[#18766]

Translog::
* Fix translog replay multiple operations same doc {pull}18611[#18611] (issues: {issue}18547[#18547], {issue}18623[#18623])



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

Core::
* Upgrade to Lucene 6.1.0. {pull}18926[#18926]
* Upgrade to lucene-6.1.0-snapshot-3a57bea. {pull}18786[#18786]
* Upgrade to Lucene 6.0.1. {pull}18648[#18648] (issues: {issue}17535[#17535], {issue}28[#28])

Dates::
* Upgrade joda-time to 2.9.4 {pull}18609[#18609] (issues: {issue}14524[#14524], {issue}18017[#18017])

Packaging::
* Upgrade JNA to 4.2.2 and remove optionality {pull}19045[#19045] (issue: {issue}13245[#13245])

Plugin Discovery EC2::
* Update aws sdk to 1.10.69 and add use_throttle_retries repository setting {pull}17784[#17784] (issues: {issue}538[#538], {issue}586[#586], {issue}589[#589])



