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

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

Allocation::
* Move parsing of allocation commands into REST and remove support for plugins to register allocation commands {pull}17802[#17802] (issue: {issue}17894[#17894])

CAT API::
* Row-centric output for _cat/fielddata {pull}18068[#18068] (issue: {issue}10249[#10249])

Discovery::
* Introduce node handshake {pull}15971[#15971] (issue: {issue}9061[#9061])

Inner Hits::
* Drop top level inner hits in favour of inner hits defined in the query dsl {pull}17816[#17816] (issue: {issue}11118[#11118])

Internal::
* Actually bound the generic thread pool {pull}17017[#17017]

Packaging::
* Require /bin/bash in packaging {pull}18259[#18259] (issue: {issue}18251[#18251])
* Remove plugin script parsing of system properties {pull}18207[#18207] (issue: {issue}18140[#18140])

Percolator::
* Move the percolator from core to its own module {pull}18511[#18511]
* Remove percolator cache {pull}18434[#18434]

Plugin Delete By Query::
* Remove Delete-By-Query plugin {pull}18516[#18516] (issue: {issue}18469[#18469])

Query DSL::
* Lessen leniency of the query dsl. {pull}18276[#18276]

Scripting::
* Remove LeafSearchScript.runAsFloat(): Nothing calls it. {pull}18364[#18364]
* Allow only a single extension for a scripting engine {pull}18332[#18332] (issue: {issue}10598[#10598])
* Remove 'sandbox' option for script settings, allow only registering a single language. {pull}18226[#18226] (issues: {issue}10598[#10598], {issue}17114[#17114])

Search::
* Refactor of query profile classes to make way for other profile implementations {pull}18370[#18370] (issue: {issue}10538[#10538])

Settings::
* Register `indices.query.bool.max_clause_count` setting {pull}18341[#18341] (issue: {issue}18336[#18336])
* Remove settings and system properties entanglement {pull}18198[#18198] (issue: {issue}18197[#18197])



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

Ingest::
* Add a Sort ingest processor {pull}17999[#17999]
* Add date_index_name processor {pull}17973[#17973] (issue: {issue}17814[#17814])

Reindex API::
* Port Delete By Query to Reindex infrastructure {pull}18329[#18329] (issue: {issue}16883[#16883])

Snapshot/Restore::
* Add Google Cloud Storage repository plugin {pull}13578[#13578] (issue: {issue}12880[#12880])

Stats::
* Extend field stats to report searchable/aggregatable fields {pull}17980[#17980] (issue: {issue}17750[#17750])



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

Aggregations::
* Rename AggregatorBuilder to AggregationBuilder {pull}18377[#18377] (issue: {issue}18367[#18367])
* Add the ability to use the breadth_first mode with nested aggregations (such as `top_hits`) which require access to score information. {pull}18127[#18127] (issue: {issue}9825[#9825])
* Make significant terms work on fields that are indexed with points. {pull}18031[#18031]

Allocation::
* Limit retries of failed allocations per index {pull}18467[#18467] (issue: {issue}18417[#18417])
* Immutable ShardRouting {pull}17821[#17821]
* Add the shard's store status to the explain API {pull}17689[#17689] (issue: {issue}17372[#17372])

Analysis::
* Core: better error message when analyzer created without tokenizer or… {pull}18455[#18455] (issue: {issue}15492[#15492])
* Move AsciiFolding earlier in FingerprintAnalyzer filter chain {pull}18281[#18281] (issue: {issue}18266[#18266])

CAT API::
* Add node name to Cat Recovery {pull}18187[#18187] (issue: {issue}8041[#8041])
* Add support for documented byte/size units and for micros as a time unit in _cat API {pull}17779[#17779]

Core::
* Log OS and JVM on startup {pull}18557[#18557]
* Add GC overhead logging {pull}18419[#18419]
* Refactor JvmGcMonitorService for testing {pull}18378[#18378]
* Default to server VM and add client VM check {pull}18155[#18155]
* Add system bootstrap checks escape hatch {pull}18088[#18088]
* Avoid sliced locked contention in internal engine {pull}18060[#18060] (issue: {issue}18053[#18053])

Dates::
* Support full range of Java Long for epoch DateTime {pull}18509[#18509] (issue: {issue}17936[#17936])

Discovery::
* Log warning if minimum_master_nodes set to less than quorum {pull}15625[#15625]

Exceptions::
* Make the index-too-old exception more explicit {pull}18438[#18438]
* Add index name in IndexAlreadyExistsException default message {pull}18274[#18274]

Expressions::
* Support geo_point fields in lucene expressions {pull}18096[#18096]
* Add support for .empty to expressions, and some docs improvements {pull}18077[#18077]

Ingest::
* Expose underlying processor to blame for thrown exception within CompoundProcessor {pull}18342[#18342] (issue: {issue}17823[#17823])
* Avoid string concatentation in IngestDocument.FieldPath {pull}18108[#18108]
* add ability to specify multiple grok patterns {pull}18074[#18074] (issue: {issue}17903[#17903])
* add ability to disable ability to override values of existing fields in set processor {pull}17902[#17902] (issue: {issue}17659[#17659])

Inner Hits::
* Change scriptFields member in InnerHitBuilder to set {pull}18092[#18092] (issue: {issue}5831[#5831])

Internal::
* Do not automatically close XContent objects/arrays {pull}18549[#18549] (issue: {issue}18433[#18433])
* Remove use of a Fields class in snapshot responses {pull}18497[#18497]
* Removes multiple toXContent entry points for SnapshotInfo {pull}18494[#18494]
* Removes unused methods in the o/e/common/Strings class {pull}18346[#18346]
* Determine content length eagerly in HttpServer {pull}18203[#18203]
* Consolidate query generation in QueryShardContext {pull}18129[#18129]
* Make reset in QueryShardContext private {pull}18113[#18113]
* Remove Strings#splitStringToArray {pull}18110[#18110]
* Add toString() to GetResponse {pull}18102[#18102]
* ConstructingObjectParser adapts ObjectParser for ctor args {pull}17596[#17596] (issue: {issue}17352[#17352])

Java API::
* Improve adding clauses to `span_near` and `span_or` query {pull}18485[#18485] (issue: {issue}18478[#18478])
* QueryBuilder does not need generics. {pull}18133[#18133]

Mapping::
* Adds a methods to find (and dynamically create) the mappers for the parents of a field with dots in the field name {pull}18106[#18106] (issue: {issue}15951[#15951])

Network::
* Netty request/response tracer should wait for send {pull}18500[#18500]
* Exclude specific transport actions from request size limit check {pull}17951[#17951]

Packaging::
* Don't mkdir directly in deb init script {pull}18503[#18503] (issue: {issue}18307[#18307])
* Increase default heap size to 2g {pull}18311[#18311] (issues: {issue}16334[#16334], {issue}17686[#17686], {issue}18309[#18309])
* Switch init.d scripts to use bash {pull}18308[#18308] (issue: {issue}18259[#18259])
* Switch scripts to use bash {pull}18251[#18251] (issue: {issue}14002[#14002])
* Further simplifications of plugin script {pull}18239[#18239] (issue: {issue}18207[#18207])
* Pass ES_JAVA_OPTS to JVM for plugins script {pull}18140[#18140] (issue: {issue}16790[#16790])

Parent/Child::
* Allow adding additional child types that point to an existing parent type {pull}18446[#18446] (issue: {issue}17956[#17956])

Plugin Lang Painless::
* improve painless whitelist coverage of java api {pull}18533[#18533]
* Definition cleanup {pull}18463[#18463]
* Made def variable casting consistent with invokedynamic rules {pull}18425[#18425]
* Use Java 9 Indy String Concats, if available {pull}18400[#18400] (issue: {issue}18398[#18398])
* Add method overloading based on arity {pull}18385[#18385]
* Refactor WriterUtils to extend ASM GeneratorAdapter {pull}18382[#18382]
* Whitelist expansion {pull}18372[#18372]
* Remove boxing when loading and storing values in "def" fields/arrays, remove boxing onsimple method calls of "def" methods {pull}18359[#18359]
* Some cleanups {pull}18352[#18352]
* Use isAssignableFrom instead of relying on ClassCastException {pull}18350[#18350]
* Build descriptor of array and field load/store in code {pull}18338[#18338]
* Rename the dynamic call site factory to DefBootstrap {pull}18335[#18335]
* Cleanup of DynamicCallSite {pull}18323[#18323]
* Improve exception stacktraces {pull}18319[#18319]
* Make Line Number Available in Painless {pull}18298[#18298]
* Remove input, support params instead {pull}18287[#18287]
* Decouple ANTLR AST from Painless {pull}18286[#18286]
* _value support in painess? {pull}18284[#18284]
* Long priority over Float {pull}18282[#18282]
* _score as double, not float {pull}18277[#18277]
* Add 'ctx' keyword to painless. {pull}18264[#18264]
* Painless doc access {pull}18262[#18262]
* Retrieve _score directly from Scorer {pull}18258[#18258]
* Implement needsScore() correctly. {pull}18247[#18247]
* Add synthetic length property as alias to Lists, so they can be used like arrays {pull}18241[#18241]
* Use better typing for dynamic method calls {pull}18234[#18234]
* Array load/store and length with invokedynamic {pull}18232[#18232] (issue: {issue}18201[#18201])
* Switch painless dynamic calls to invokedynamic, remove perf hack/cheat {pull}18201[#18201]
* Add fielddata accessors (.value/.values/.distance()/etc) {pull}18169[#18169]
* painless: optimize/simplify dynamic field and method access {pull}18151[#18151]
* Painless: Single-Quoted Strings {pull}18150[#18150]

Plugins::
* Add plugin information for Verbose mode {pull}18051[#18051] (issue: {issue}16375[#16375])

Query DSL::
* Enforce MatchQueryBuilder#maxExpansions() to be strictly positive {pull}18464[#18464]
* Don't allow `fuzziness` for `multi_match` types `cross_fields`, `phrase` and `phrase_prefix` {pull}18322[#18322] (issues: {issue}6866[#6866], {issue}7764[#7764])

REST::
* CORS handling triggered whether User-Agent is a browser or not {pull}18283[#18283]
* Add semicolon query string parameter delimiter {pull}18186[#18186] (issue: {issue}18175[#18175])
* Enable HTTP compression by default with compression level 3 {pull}18066[#18066] (issue: {issue}7309[#7309])

Reindex API::
* Make Reindex cancellation tests more uniform {pull}18498[#18498]
* Makes DeleteByQueryRequest implements IndicesRequest {pull}18466[#18466]
* Switch default batch size for reindex to 1000 {pull}18340[#18340]
* Teach reindex to retry on search failures {pull}18331[#18331] (issue: {issue}18059[#18059])
* Remove ReindexResponse in favor of BulkIndexByScrollResponse {pull}18205[#18205]
* Stricter validation of Reindex's requests_per_second {pull}18028[#18028]

Search::
* Introduces GeoValidationMethod to GeoDistanceSortBuilder {pull}18036[#18036]
* Switches from empty boolean query to matchNoDocs {pull}18007[#18007] (issue: {issue}17981[#17981])
* Allow binary sort values. {pull}17959[#17959] (issue: {issue}6077[#6077])

Search Refactoring::
* Removes the now obsolete SearchParseElement implementations {pull}18233[#18233]

Snapshot/Restore::
* Change BlobPath.buildAsString() method {pull}18461[#18461]
* Remove the Snapshot class in favor of using SnapshotInfo {pull}18167[#18167] (issue: {issue}18156[#18156])

Stats::
* Do not return fieldstats information for fields that exist in the mapping but not in the index. {pull}18212[#18212] (issue: {issue}17980[#17980])
* Add whether the shard state fetch is pending to the allocation explain API {pull}18119[#18119] (issue: {issue}17372[#17372])
* Add Failure Details to every NodesResponse {pull}17964[#17964] (issue: {issue}3740[#3740])
* Add I/O statistics on Linux {pull}15915[#15915] (issue: {issue}15296[#15296])

Translog::
* FSync translog outside of the writers global lock {pull}18360[#18360]



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

Aggregations::
* Fix TimeUnitRounding for hour, minute and second units {pull}18415[#18415] (issue: {issue}18326[#18326])
* Aggregations fix: support include/exclude strings for IP and dates {pull}18408[#18408] (issue: {issue}17705[#17705])
* Fix xcontent rendering of ip terms aggs. {pull}18003[#18003]
* Improving parsing of sigma param for Extended Stats Bucket Aggregation {pull}17562[#17562] (issue: {issue}17499[#17499])

Analysis::
* Add `Character.MODIFIER_SYMBOL` to the list of symbol categories. {pull}18402[#18402] (issue: {issue}18388[#18388])

Bulk::
* Add not-null precondition check in BulkRequest {pull}18347[#18347] (issue: {issue}12038[#12038])

CAT API::
* Expand wildcards to closed indices in /_cat/indices {pull}18545[#18545] (issues: {issue}16419[#16419], {issue}17395[#17395])

Circuit Breakers::
* Free bytes reserved on request breaker {pull}18204[#18204] (issue: {issue}18144[#18144])

Cluster::
* Dangling indices are not imported if a tombstone for the index exists {pull}18250[#18250] (issue: {issue}18249[#18249])
* Fix issue with tombstones matching active indices in cluster state {pull}18058[#18058] (issue: {issue}18054[#18054])

Core::
* Fix concurrency bug in IMC that could cause it to check too infrequently {pull}18357[#18357]
* Iterables.flatten should not pre-cache the first iterator {pull}18355[#18355] (issue: {issue}18353[#18353])
* Avoid race while retiring executors {pull}18333[#18333]
* Don't try to compute completion stats on a reader after we already closed it {pull}18094[#18094]

Highlighting::
* Skip all geo point queries in plain highlighter {pull}18495[#18495] (issue: {issue}17537[#17537])
* Exclude all but string fields from highlighting if wildcards are used… {pull}18183[#18183] (issue: {issue}17537[#17537])

Ingest::
* Pipeline Stats: Fix concurrent modification exception {pull}18177[#18177] (issue: {issue}18126[#18126])
* Validate properties values according to database type {pull}17940[#17940] (issue: {issue}17683[#17683])

Internal::
* Add XPointValues {pull}18011[#18011] (issue: {issue}18010[#18010])

Mapping::
* Make doc_values accessible for _type {pull}18220[#18220]
* Fix and test handling of `null_value`. {pull}18090[#18090] (issue: {issue}18085[#18085])
* Fail automatic string upgrade if the value of `index` is not recognized. {pull}18082[#18082] (issue: {issue}18062[#18062])

Packaging::
* Filter client/server VM options from jvm.options {pull}18473[#18473]
* Preserve config files from RPM install {pull}18188[#18188] (issue: {issue}18158[#18158])
* Fix typo in message for variable setup ES_MAX_MEM {pull}18168[#18168]
* Don't run `mkdir` when $DATA_DIR contains a comma-separated list {pull}17419[#17419] (issue: {issue}16992[#16992])

Percolator::
* Add support for MatchNoDocsQuery in percolator's query terms extract service {pull}18492[#18492]

Plugin Discovery EC2::
* Add TAG_SETTING to list of allowed tags for the ec2 discovery plugin. {pull}18257[#18257]

Plugin Lang Painless::
* Remove Grammar Ambiguities {pull}18531[#18531]
* Remove if/else ANTLR ambiguity. {pull}18428[#18428]
* Fix insanely slow compilation {pull}18410[#18410] (issue: {issue}18398[#18398])
* Fix Bug in Painless Assignment {pull}18379[#18379]
* Fix bracket shortcuts {pull}18263[#18263]

Plugin Repository Azure::
* Fix azure files removal {pull}18451[#18451] (issues: {issue}16472[#16472], {issue}18436[#18436])

REST::
* Do not decode path when sending error {pull}18477[#18477] (issue: {issue}18476[#18476])
* CORS should permit same origin requests {pull}18278[#18278] (issue: {issue}18256[#18256])

Search::
* Fix _only_nodes preferences {pull}18483[#18483] (issues: {issue}12546[#12546], {issue}12700[#12700])
* Speed up named queries. {pull}18470[#18470]
* Fix parsing single `rescore` element in SearchSourceBuilder {pull}18440[#18440] (issue: {issue}18439[#18439])
* Fail queries on not indexed fields. {pull}18014[#18014]

Settings::
* Use object equality to compare versions in IndexSettings {pull}18103[#18103]
* fix exists method for list settings when using numbered setting format {pull}17949[#17949]

Snapshot/Restore::
* Fix race condition in snapshot initialization {pull}18426[#18426] (issue: {issue}18121[#18121])
* Handle indices=["_all"] when restoring a snapshot {pull}18025[#18025]

Stats::
* Add missing builder.endObject() in FsInfo {pull}18443[#18443] (issues: {issue}15915[#15915], {issue}18433[#18433])

Translog::
* Snapshotting and sync could cause a dead lock TranslogWriter {pull}18481[#18481] (issues: {issue}1[#1], {issue}18360[#18360], {issue}2[#2])


