See issues on GitHub

Release Notes

Breaking changes

  • Query API: Removed custom_score and custom_boost_factor queries #5076
  • NodesInfo API: Usings plugins instead of singular plugin #5072
  • Lucene: Remove the in memory buffer Lucene store/directory, uses the ram index store module instead #4994
  • Mapping API: Binary fields are no more stored by default, because its data is already available in the _source #4957
  • Aggregations: aggregation names can now only contain alpha-numeric, hyphen ("-") and underscore ("_") characters, due to the enhancement which allows sub-aggregation sorting #5253

New features

  • Aggregations: New cardinality aggregation #5426
  • Aggregations: New percentiles aggregation #5323
  • Aggregations: New significant terms aggregation #5146
  • Aggregations: Allow geo_hash agg to return all hashes #4875
  • Aggregations: Allow terms agg to return all terms #4837
  • Aggregations: Add script support to value_count aggregations #5001
  • Query API: Added cross_fields type to multi_match query #5005
  • Query API: Add fuzzy/slop support to simple_query_string query #4985
  • Query API: Use mustache based templates to prerender search requests #4879
  • Query API: Added support for multiple sequential rescores #4748
  • Search Template API: Added dedicated /_search/template endpoint #5353
  • cat API: Added _cat/plugins endpoint #4824
  • cat API: Added _cat/segments endpoint #4711
  • Index Template API: Allow adding aliases in index template #1825
  • Index versioning: Feature external version force option #4213
  • Create Index API: Support aliases on index creation #4920
  • Optimize API: Allow to force single-segment merges #5243
  • Mapping: Add preserve original token option to ASCIIFolding filter #5115
  • Percolation: Allow percolation of nested documents #5082
  • Recovery: Added recovery API endpoint to receive status of ongoing recovery #4637
  • Shard allocation: Expose more information to make sense of allocation decisions #2483

Enhancements

  • Aggregations: Significant terms aggregation should only employ caching when necessary #5450
  • Aggregations: Added support for sorting buckets based on sub aggregations #5253
  • Aggregations: Move reduce phase to use paged recycler enabled structures #4929
  • Aggregations: Rest API needs to be consistent across all multi-bucket aggs #4926
  • Aggregations: Cleanup aggs java api #4922
  • Aggregations: Add more fine-grained rounding for histograms #4800
  • Aggregations: Use ordinals only on low-cardinality fields in terms agg #5303
  • Aggregations: Removed some abstractions in aggregations collection to improve performance #4841
  • Query API: Add lenient option to simple_query_string query #5208
  • Query API: Add locale parameter to query_string and simple_query_string #5131
  • Query API: Add support for lowercase_expanded_terms flag to simple_query_string query #5126
  • Geo: Improve geo distance accuracy #5192
  • Geo Filter Parser: Improved error detection in geo_filter parsing #5371
  • Geo: Upgrade to Spatial4j 0.4.1 and JTS 1.13 #5336
  • Lucene: Work around Lucene 3.x segments costly RAM usage estimations #5201
  • Lucene: Use patched version of ReferenceManager to prevent infinite loop in ReferenceManager#acquire() #5043
  • Lucene: Upgrade to Lucene 4.6.1 #4897
  • Lucene: Mark 'lucene-expression' as 'provided' in pom.xml #4859
  • Lucene: Add RamUsageEstimator#sizeOf(Object) to forbidden APIs as it can be very slow #4975
  • Snapshot/Restore API: Add stats for running snapshot to get snapshot API #4946
  • Snapshot/Restore API: Fix handling of include_global_state parameter to make it consistent #4949
  • Snapshot/Restore API: Add throttling to snaphost and restore operations #4855
  • Snapshot/Restore API: Added ability to get snapshot status for running snapshots #5123
  • Field data: Add circuit breaker for parent/child id cache #5325
  • Field data: Move parent/child over from id cache to field data #4930
  • Field data: Fix possible discrepancy with parent/child circuit breaker #5526
  • Merging: Ensure merges to not happen when indexing a document or executing flush #5319
  • Merging: Move to use serial merge schedule by default #5447
  • Mapping API: Support externalValue() in more mappers #4986
  • Mapping API: Shingle filter exposes filler_token #4307
  • cat API: Added /_cat/thread_pool endpoint #4907
  • cat API: Changed headers to be more consistent and complete #4852
  • Plugins: Allow to add a version to plugins #2784
  • PluginManager: Remove useless URL object instantiation #5206
  • Plugins: Serving _site plugins do not pick up on index.html for sub directories #4845
  • Discovery: Unicast discovery favours a ping response with master over a ping response without master #5413
  • Discovery: Node join/leave events should have higher than URGENT priority #5062
  • Allocation: Add explanations for all allocation deciders #4934
  • Recovery: Don't throttle the translog stage of recovery #4890
  • Store Throttling: Updating throttle type setting was not applied upon updates #5392
  • Cluster state: Improved multiple cluster state processing on receiving nodes #5139
  • Cluster update settings API: Allow to dynamically change discovery.zen.publish_timeout #5063
  • Suggestions: Speed up phrase suggestion scoring #5396
  • Rest GET field mapping API: Change behaviour to be like other REST endpoints #4738
  • Percolation: Add MemoryIndex reuse when percolating doc with nested type #5332
  • Analyze API: Added support for char filters #5148
  • Delete by query API: Return single failure reasons #5093
  • DistanceUnit: Added support for nautical miles #5088
  • ByteSizeValues: Added peta and tera to RestTable.renderValue() #4871
  • Shard startup: Bulk process of shard started/failed should not execute on already processed events #5061
  • Transport: Remove redundant version checks in transport serialisation #4731
  • Packaging: Move systemd files from /etc to /usr/lib #4029
  • Query Parsing: Clean the query parse context after usage #5475
  • Java API QueryBuilder: Add hasClauses method to BoolFilterBuilder #5472
  • Java API: Allow iteration over MultiGetRequest#Item instances #5470
  • Internal: Use BytesReference to write to translog files #5463
  • Internal: BytesReference usage to properly work when hasArray is not available #5455
  • Internal: Add tracking of allocated arrays to optionally reuse data structures #5264
  • Internal: Removed thread local recycler in favor of paged based recyclers #5254
  • Internal: Reuse pages more agressively #5299
  • Internal: Improved lifecycle control for pooled instances #5214
  • Internal: Rewrite BytesStreamOutput to use BigArrays/ByteArray #5159
  • Testing: Randomized number of replicas used for indices created during tests #5394
  • Testing: Randomized number of shards used for indices created during tests #5356
  • Testing: Run REST tests against multiple nodes #5003

Bug fixes

  • Aggregations: Date histogram bucket should return the date key in UTC #5477
  • Aggregations: Scripts in aggs can't return more than 4 values #5414
  • Aggregations: Invoke postCollection on aggregation collectors #5387
  • Aggregations: Fixed a bug in date_histogram aggregation parsing #5379
  • Aggregations: Terms aggregations order wrong when sorting NaN #5236
  • Aggregations: Missing aggregation fails when object containing aggregation field is missing as well #5190
  • Aggregations: date_histogram against empty index results in ArrayIndexOutOfBoundsException #5179
  • Aggregations: date_histogram aggregation and time_zone #5057
  • Aggregations: aggregation error ArrayIndexOutOfBoundsException #5048
  • Aggregations: Aggregations could return different counts when invoked twice in a row #5021
  • Aggregations: Add camel-case support in aggregation fields #5009
  • Aggregations: Sorting terms agg by sub-aggegation doesn't respect asc/desc when executing on a single shard #4951
  • Query API: match_phrase_prefix no supports slop again #5437
  • Query API: Edit distance allowed values for fuzzy_like_this query #5292
  • Query API: Terms filter returning wrong results due to wrong caching #5363
  • Query API: Add support of field boost in common terms query #5258
  • Query API: Multi match query fails to highlight with new cross field mode #5246
  • Query API: Make _exists_/_missing_ behave consistently with exists/missing #5142
  • Query API: Source filtering with wildcards broken when given multiple patterns #5133
  • Query templates: Mustache templates should escape JSON, not HTML #5473
  • Query API: Allow specifying nested fields in simple_query_string query #5110
  • Query API: Parent / child queries force default similarity #4977
  • Query API: Made multi_match query parsing more strict #4964
  • Query API: filtered query parses _name incorrectly #4960
  • Query API: Cache date range filters that use now with rounding #4947
  • Highlighting: Using forceSource on highlighting field option doesn't have any effect when set using the Java API #5220
  • Highlighting: Executing on a wildcard field name uses the same highlighter for all fields that match #5175
  • Highlighting: Executing on a wildcard field name causes the wildcard expression to be returned rather than the actual field name #5221
  • Highlighting: Postings Highlighter does not highlight trailing wildcard matches #5127
  • Suggestions: bugfixes for the completion postings format #4973
  • Suggestions: NullPointerException in completion suggester requests #4788
  • Percolation: Disabled query size estimation in percolator #5372
  • Percolation: Fast vector highlighter not working properly #5129
  • Percolation: Fix highlighting in percolate existing doc api #5108
  • Percolation: Fix highlight_query in percolator #5097
  • Percolation: Make highlight query also work in the percolate api #5090
  • Percolation: Percolator response should always return the matches key #4881
  • Aliases API: An alias should accept a numeric routing value #5471
  • Snapshot/Restore API: Added retry mechanism to get snapshot method #5411
  • Snapshot/Restore API: The delete snapshot operation on a running snapshot may take a long time on large shards #5242
  • Snapshot/Restore API: Restore of an existing index using rename doesn't completly open the index after restore #5212
  • Snapshot/Restore API: Restore of an existing index doesn't restore mappings and settings #5210
  • REST API: Support source parameter
    • scroll API supports source parameter #4941
    • percolate API supports source parameter #4903
    • mtermvectors API supports source parameter #4902
    • msearch API supports source parameter #4901
    • mpercolate API supports source parameter #4900
    • mget API supports source parameter #4892
    • Fix potential NPE when no source and no body #4924
  • Tribe node: Blocking writes on a tribe node creates a "blocks" tribe #5389
  • Field data: Fix issue where circuit breaker was always reset to 80% upon startup #5334
  • Field data: Circuit breaker could create NullPointerException #5326
  • Internal: Fix possible exception in Strings.toCamelCase() method #5207
  • Internal: XContentBuilder.yamlBuilder() incorrectly returns a SMILE builder #5185
  • Internal: Return correct XContentParser for SMILE #5510
  • Internal: SearchContext is occasionally closed prematurely #5165
  • Plugins: Fixed possible NullPointerException in PluginsService when starting elasticsearch with a wrong user #5195
  • Plugins: Upgrading analysis plugins fails #5030
  • GetFieldMappings API: The API did not return field mapping if the index is not hosted on the node executing it #5177
  • Delete by query API: Exposed shard id related to a failure in delete by query #5125
  • Internal: Fix AndDocIdSet#IteratorBasedIterator to not violate initial doc state and prevent undefined search context behaviour #5070
  • Scripts: ScriptBytesValues.currentValueHash was wrong and could lead to performance problems #5004
  • Mapping API: Added fields support to geo_point and completion field type #4963
  • HotThreads: Execution could fail with ArrayIndexOutOfBoundsException if busiestThreads > actual threads #4927
  • Cluster State API: Filtered cluster state still returns stub elements #4885
  • Testing: BalancedShardAllocator makes non-deterministic rebalance decisions #4867
  • Rivers: Rivers might not get started due to missing _meta document #4864
  • Discovery: Prevent possible starvation due to exception if sending a ping throws exception #5440
  • Bulk API: Enabling _timestamp mapping could cause bulk API to fail entire request instead of single operation #4745
  • Bulk API: BulkProcessor process every n+1 docs instead of n #4265
  • Packaging: Debian Package sets /etc/elasticsearch/* to 0644 #3820
  • Packaging: Add timeout to shutdown with KILL signal for RPM #5020
  • Geo: Allow distance unit for geohash precision #5449
  • Settings: Non-master nodes do not update the ElectMasterService when dynamically setting min_master_nodes #5494