See issues on GitHub

Release Notes

Breaking changes:

  • Reject put mapping requests when the root node does not have the same name as the type #4038
  • Prohibit adding a parent type mapping to an existing type #3849
  • Reject indexing requests which specify a parent, if no parent type is defined #3848
  • Remove get index templates deprecated methods #3681  (affects Java API only)
  • Remove RestActions#splitXXX(String) methods in favor of strings#splitStringByCommaToArray  #3680  (affects  Java API  only)
  • Rename matched_filters to matched_queries and added support for named queries  #3581 & #3644
  • Add option to disable printing out a human readable version of size and time values like "1mb" & "2m". The human readable values are now turned off by default  #3432 & #3541
  • Rename existsAliases to aliasesExist #3330
  • Close/Open Index API support multiple indices and wildcard on index names #3217 (affects Java API only)
  • Add a minimum_should_match parameter when Common query has only high frequent terms #3188
  • Distributed percolator engine #3173
  • Get mapping response always returns the index name as root node #3172
  • Change Version comparison methods to be more readable #3124 (affects Java API only)
  • Inline string query boosting (i.e., "field:value^7")  was ignored if one specified a query level boost  #3024
  • Completion Suggester: Reject non-integer weights on indexing #3977
  • Deb/RPM: Disable immediate restart on package upgrade #3685
  • Flush API: remove refresh flag #3689
  • Optimize API: Remove refresh flag #3690
  • Thread Pool: Remove blocking type option #3531

New features:

  • Distributed percolator engine #3173
    • Add document highlighter to percolate api #3574
    • Add scoring support to percolate api #3506
    • Add multi percolate api #3488
    • Add size option to percolate api #3440
    • Add count percolate api #3430
    • Percolating existing document api #3380
    • Add more percolate statistics #3883
    • Add facet support to percolate api. #3851
    • Improve alias support in the percolate api #3420
    • Percolate queries are stored under the ".percolate" type #4090
  • _cat API
    • Add _cat/health #4050
    • Add _cat/allocation #4014
    • Add _cat/recovery API endpoint #3969
    • Add heap used percentage to _cat/nodes #4020
    • Add ip and node name to _cat/recovery #4016
  • GetFieldMapping API #3941
  • Disk-based field data #3806
  • Added scripts to simplify running Elasticsearch as a service on Windows #3716
  • New highlighter based on lucene postings highlighter #3704#4042 & #4103
  • Clear Scroll API #3657
  • Shard allocation to take into account free disk space #3480
  • Add highlighting to support to suggestions #3442
  • Function score query #3423 , #3872#3892 & #3464
  • Add version support to get and mget APIs #3404
  • Completion prefix suggestion #3376
  • Add pending cluster tasks API #3368
  • More fine grained control over _source retrieval, in get, mget, get_source, explain & search API #3301 & #3886
  • Term vector API to return the term vectors for one or more documents #3114 & #3536
  • Automatic reload file based scripts when changed #4062
  • Allow to highlighting using different queries than the search query #3630
  • Indexing:
    • Add support for update to bulk api #2982
    • Add doc_as_upsert option to the update API #3195
    • Add a created flag to IndexResponse & UpdateResponse #3154
    • Enable delimited payload token filter #3859
  • Aliases:
    • Add indices aliases exists api #3100
    • Add delete index alias api for deleting a single alias. #3077
    • Add endpoint to add one specific index alias #3076
    • Add get index alias api that allows get specific aliases #3075
  • Sorting:
    • Support sort_mode average for geo distance sorting #2962
    • Added support for random sort #1170

Enhancements:

  • The standard analyzer now uses an empty stop word list by default. Existing indices are not affected #3775
  • URI routing parameter support with multi search API #4058
  • URI routing parameter support with Bulk API #4053
  • URI routing parameter support with Bulk API #3996
  • Expose the Path, dev and mount options of the file stats via the Java API #4004
  • Improved acknowledgement infrastructure:
    • Generic cluster state update ack mechanism #3786
    • Update cluster settings api to support acknowledgements #3995
    • Cluster reroute api to support acknowledgements #3985
    • Delete mapping api to support acknowledgements #3984
    • Update index settings api to support acknowledgements #3983
    • Delete warmer api to support acknowledgements #3833
    • Put warmer api to support acknowledgements #3831
  • Introduce stop timeout and start type for windows service #3962
  • Rename and document "index.mapping.date.parse_upper_inclusive" setting for date fields #3914
  • Add support for Lucene SuggestStopFilter #3913
  • Added a  generic count down mechanism, to simplify the implementation of multiple APIs  #3910
  • Set queue sizes by default on bulk/index thread pools #3888
  • Migrate from Trove to Hppc #3858
  • Upgrade to Lucene 4.5 #3853
  • Better handling of empty  filters while parsing #3838
  • Support year units in date math expressions #3828
  • Parent / child queries now also work with the count, delete by query and explain APIs #3822
  • Add support for @shard_size@ for terms & terms_stats facets #3821
  • Accept dynamic templates with only a match type criteria #3814
  • Add version support for analyzers to allow backward compatibility in future releases #3790
  • Cat shards/indices don't properly handle index parameter #3758
  • Allow _boost field to be indexed and stored in mapping #3752
  • Discovery to support a timeout waiting for other nodes to processing new cluster state #3736
  • Add "node.mode" with "local" or "network" options #3713
  • Better handling of /_all/_search when no indices exist #3710
  • Add dedicated Suggest Thread Pool #3698
  • span_near query should accept slop = -1 (bis) #3673
  • Include ARMHF Version of Java in JDK_DIRS #3659
  • CompletionSuggest should throw an exception if input string contains a reserved character. #3648
  • Allow to control the number of processors sizes are based on #3643
  • BytesStreamOutput default size should be 2k instead of 32k #3638
  • Not allowing index names in request body for multi-get/search/bulk when indices are already given in url #3636
  • On Solaris, default LZF compress type (for transport) can cause segfault #3634
  • FlushNotAllowedEngineException during optimize #3631
  • Make the acceptable compression overhead used by MultiOrdinals configurable and default to FASTEST #3623
  • Remove o.e.common.UUID and replace it with a simplified version #3605
  • StackOverflow in completion suggester when using long input strings #3596
  • Install site plugin with custom url doesn't filter directory #3582
  • Improve refresh logic when replica move to started #3573
  • Smarter default for index.index_concurrency, based on the number of available cores with an upper bound #3546
  • Bound processor size based calculations to 32 as safety measure not to create too many threads #3545
  • Better exception handling in actions when forking to a thread pool #3524
  • Expose statistics for completion suggest #3522
  • Make RestSearchAction#parseSearchXXX(RestRequest) public #3499
  • Raise default DeleteIndex timeout #3498
  • More helpful error when specifying side=BACK on edge n-gram tokenizer/tokenfilter #3489
  • Change default operation_threading to thread_per_shard to improve scalability #3483
  • Suggest should ignore empty shards #3473
  • Support FuzzySuggester for completion suggest #3465
  • Expose IndexWriter#setUseCompundFile via Engine settings. #3461
  • Improve filtering by _parent field #3454
  • Streamline Search / Broadcast (count, suggest, refresh, ...) APIs header #3441
  • Add client method to get a specific index template #3439
  • HighlightBuilder should be consistent with SearchContextHighlight.Field options #3435
  • Added index templates REST support for HEAD and a 404 status code if not existing #3434
  • Search on a shard group while relocation may fail in some rare cases #3427
  • Plugin Manager should support -remove group/artifact/version naming #3421
  • Reroute eagerly on shard started events #3417
  • Delete API ack to wait also for actual deletion of shards from disk #3413
  • Forbid usage of new StringReader(String) #3411
  • Improve how aliases are handled in the cluster state. #3410
  • Use Analyzer.tokenStream(fieldName, text) instead of Analyzer.tokenStream(fieldName, new FastStringReader(text)) #3409
  • Open/Close indices to support acknowledgement from other nodes #3400
  • auto_expand_replicas causing very large amount of cluster state changes when a node joins or leaves the cluster - causing the master to become unresponsive #3399
  • RegexpQueryBuilder should implement MultiTermQueryBuilder #3392
  • Add Git build info when we build a distribution #3370
  • Expose recursion level for Hunspell token filter (post Lucene 4.4 upgrade) #3369
  • Add optimize thread pool (size 1) dedicated to perform explicit optimize API #3366
  • Cluster State Update APIs (master node) to respect master_timeout better #3365
  • Zen Discovery Cluster Events to have Priority.URGENT #3361
  • Highlighting doesn't work with term vectors enabled and some complex queries #3357
  • _bulk response for delete operations lack the @found@ field #3320
  • (Java) Using primitive arrays instead of Object with map/builder #3279
  • Add a score_mode to the rescore #3258
  • Lookup Terms Filter ignores the routing parameter #3233
  • Add Arabic/PersianNormalizationFilters from Lucene #3231
  • Geohash filter format #3229
  • Merge integer field data implementations together #3220
  • Lookup Terms Filter _cache parameter not being taken into account #3219
  • Geohash filter #3218
  • Expose fielddata "fields" param in standard in indicesStatsRequest #3205
  • Suggest API infrastructure exposes more information for plugins #3199
  • Expose timeout in nodes_info REST API #3191
  • Compress PagedBytesAtomicFieldData's termOrdToBytesOffset #3186
  • Pack the ordinals in field data for single valued fields #3185
  • Introduce a dedicate JAVA get mapping and get warmers API and use it to improved performance of existing REST API  #3171
  • custom_score could support a filter directly #3167
  • Allow specifying the compound format ration via the "index.compound_format" settings #3166
  • Missing/exists filters should also work for objects #3141
  • Update the plugin manager's help #3112
  • Store _version as a numeric doc values field #3103
  • No matched_filters being returned when using named filters #3097
  • Make suggest API implementations pluggable #3089
  • Integrate forbiddenAPIs checks into ElasticSearch #3059
  • Date parsing is locale dependant with no way to configure #3047
  • Add more informative toString method to StoreDirectory #3011
  • REST Get Source API  #2993
  • Update API doesn't support both script and doc #2967
  • Return proper status code in case of failure for delete by query api #2963
  • Allow plugins to add HTTP headers to responses. #2540
  • enable GET /_template to show all templates #2532
  • Allow using multiple predefined date formats  #2132
  • Highlighting returning an excerpt even with no highlights #1171
  • Add the pattern_capture token filter #3340
  • Expose LimitTokenCountFilter in ElasticSearch #3013
  • Have the hunspell filters do dedup by default #2969
  • Completion Suggester: Allow payload to be a value #3550
  • Use Recovery Throttling by default #3035
  • Use Merge Throttling by default in #3033
  • Raise Search ThreadPool Size to 3x availableProcessors #3032
  • Allow to disable allocation on the index level #3031
  • elasticsearch.yml doesn't accept _lo_ or _lo0_ for network.host #2924
  • Delete Template: When deleting with * and no templates exists, don't 404 #3723
  • Highlighting: Add NGramTokenizer and NGramTokenFilter to broken chains #3118
  • Allow to change _source exclude/include at runtime #3491
  • Allow to update/merge the dynamic flag #3384
  • Mget: the fields parameter should accept a string #3270
  • Improve has_parent & has_child filter execution #3034
  • Improve memory usage of the parent-child id cache #3028
  • Make parent/child score mode naming consistent #3026
  • Plugin Manager: add silent mode #3628
  • Common terms query parameters inconsistent #3074
  • Support SpanMultiTermQueryWrapper #2400
  • REST: Add newline to response when using pretty flag #3748
  • Segments API: Support merge id on segments (groups segments being merged) #3904
  • Support "missing" specific handling for sorting, include _last, _first, and custom value (for string values) #896
  • Support nested sorting for sorting by script and geo distance sorting #3044
  • Nested filter with nested sorting doesn't use missing value. #3020
  • Terms Filter Lookup:
    • Allow to disable caching of lookup terms #3241
    • When on cache key defined, use terms values as key to filter cache #3240
    • Failure when no mappings for the terms field exists (no data indexed) #3216
  • Have a separate transport channel for recovery #3954
  • Add a dedicated ping transport channel #3362

Bug fixes:

  • Fix for LUCENE-5330 pruning the IndexWriter queue #4093
  • Added a protection against double closing of xContent builders #4100
  • Allow setting "indices.recovery.concurrent_small_file_streams" dynamically #4094
  • Configuring a keep words token filter to load words from file results in error message #4073
  • Fix possible NPE in ClusterState.toString() #4061
  • Error when using aliases on a MoreLikeThisQuery #4045
  • Fix bug in TransportShardReplicationOperationAction retry mechanism #4019
  • Not resending shard started messages when shard state is POST_RECOVERY and master died before processing the previous one #4009
  • The +index pattern without a wildcard in the index list is handled inconsistently #3979
  • NullPointerException using "has_child" filter after upgrade to v0.90.5 #3965
  • has_child can cause an infinite loop (100% CPU) when used in bool query #3955
  • Awareness attributes can't be reset once they are set. #3931
  • Settings queue_size on index/bulk TP can cause rejection failures when executed over network #3929
  • service.bat incorrectly assumes JRE will have a 'client' directory #3928
  • service.bat fails if ES_HOME contains whitespaces and parentheses #3906
  • No results are found with specific use case when using a custom word_delimiter filter #3898
  • elasticsearch-service-x64 unable to reflect ES_HEAP_SIZE #3884
  • "bin/plugin --install" reports success for aborted installations #3882
  • Multiple tokens at the same position not working correctly with match query if AND operator is used #3881
  • Search using BooleanQueryBuilder and GeoShapeQueryBuilder results in "Current context not an ARRAY but OBJECT" #3878
  • Get term vector api broken for missing payloads #3873
  • plugin -remove deletes bin directory #3847
  • pattern_capture token filter does not throw error with patterns missing. #3808
  • multi_match lenient query with boosted field crashes with NullPointerException #3797
  • service.bat doesn't properly set the memory limits for installed services #3785
  • Use the new index UUID to ensure mapping update events from older indices are not applied to new indices with the same name #3783
  • Quickly deleting and creating an index with the same name could cause errors due to lingering shard state change events #3778
  • Update Operation might hang (rarely) when retrying on invalid shard state #3769
  • Incorrect JVM_DLL environment variable definition in service.bat #3760
  • Boost doesn't seem to work for prefix queries #3754
  • Missing completion fields in nodes stats #3746
  • service.bat should handle JRE not just JDK for starting Elasticsearch #3739
  • service.bat fails unexpectedly if JAVA_HOME contains spaces #3725
  • Geo-distance sorting should accept the "sort_mode" parameter #3717
  • Elasticsearch startup script doesn't work from directory with spaces in path #3712
  • NestedFieldComparator misses to copy slot if root doc has docID==0 and 'Avg' is used #3706
  • Briefly delete manifested mapping type on a node without reason #3697
  • ElasticSearch shell script fails due to unsupported syntax on non-Bash shells #3691
  • Alias filter not applied when using 'multi-index' syntax with wild card in URL #3677
  • Rare race condition when introducing new fields into a mapping #3667
  • JsonGenerationException thrown in SuggestResponse#toString method #3661
  • CompletionStats can cause resource leak since requested searchers are not closed #3652
  • Validate query api parses wrong date range query when using "now" #3629
  • Explain api parses wrong date range query when using "now" #3626
  • Count api parses wrong date range query when using "now" #3625
  • NullPointerException in CompletionStats #3619
  • BalancedShardsAllocator prematurely modifies @unassigned@ shards list #3610
  • NullPointerException when closing an already closed index #3601
  • ArrayIndexOutOfBoundsException when using empty preference parameter #3591
  • SimpleHTMLEncoder to not encode non-ASCII chars #3587
  • Count and Search API status codes are inconsistent (count does not return 400) #3585
  • Forced awareness fails to balance shards #3580
  • Cluster Setting update can hang if gets settings which are not dynamically updatable #3560
  • NullPointerException during concurrent merges #3555
  • Plugin Manager can not download _site plugins from github #3551
  • Wrong analyzer used when indexing dynamic property #3544
  • Date math not working correctly due to lower casing #3540
  • Dynamic templates from an index template are skipped if a new type already have dynamic templates #3538
  • Setting index/bulk thread pools with queue_size can cause replica shard failures #3526
  • Match all query re-use could cause scoring inconsistencies #3521
  • NullPointerException during discovery #3515
  • Errors (like StackOverflow) can cause a search context to not be released #3513
  • A previous dynamic change to mapping may cause a Put Mapping request to return prematurely #3508
  • Concurrent Put Mapping API to multiple indices/types may return prematurely #3507
  • Phrase queries automatically generated by query string ignore boosts #3503
  • PutMapping requests were prematurely acknowledged if other nodes were quicker than master #3487
  • FastVectorHighlighter fails with StackOverflow on terms with large TermFrequency #3486
  • Null pointer exception for POST mode facets if facet_filter accepts no documents #3479
  • Failure to execute search request with empty top level filter #3477
  • _default_ mapping change is validated is if it was a normal type #3476
  • When replacing an existing _default_ type, the old one get merged into the new #3474
  • NPE in BytesRefOrdValComparator #3470
  • Multi-field and suggest api error #3469
  • Plugin script does not exit with exit code != 0 on error #3463
  • MLT returns all documents if non of the fields in the document are supported #3453
  • Older version of start-stop-daemon don't support --status #3452
  • Null pointer exceptions when bulk updates max out their retry on conflict #3448
  • Retry on conflict execution of updates *within* bulk request was off by one #3447
  • Using parent property in update API with doc_as_upsert=true does not work #3444
  • Pid file not properly overwritten #3425
  • Query/Filter Facet should support 64bit counter, not 32 #3419
  • MoreLikeThisFieldQueryBuilder defaulted failOnUnsupportedField inconsistently to the REST api #3402
  • Dynamically updating index.gc_deletes not working #3396
  • FuzzyLikeThisFieldQueryBuilder defaulted failOnUnsupportedField inconsistently to the REST api #3374
  • Hang when modifying the cluster state and an uncaught exception is thrown #3364
  • NullPointerException when trying to add single alias without index or alias #3363
  • Can't use empty replacement string in pattern_replace filter #3359
  • Missing filter works differently in top-level versus filtered query #3356
  • Thai language analyzer ignores stopwords configuration setting #3342
  • Fix offsets handling of the n-gram and edge n-gram tokenizers and token filters #3317
  • Closing an index right after it has been creating leaves it in an unopenable state #3313
  • Setting a geo_shape field to null caused errors while parsing #3310
  • Script based sorting is applied only after pagination #3309
  • The top_children, has_child and has_parent query can cause error when cached. #3290
  • Partial fields filtering may return false matches and doesn't allow selecting complete objects #3288
  • Debian package dependencies can result in java uninstallation #3284
  • Parent is ignored in exists request #3276
  • Mget aborting request if index missing #3267
  • The parent option is ignored in delete requests #3257
  • Error on MoreLikeThis API with Non Stored Numeric Fields #3252
  • Invalid "ElasticSearchIllegalArgumentException[The required text option is missing]" Error #3247
  • Index Warmer Setting is not dynamic anymore on 0.90.1 #3246
  • Geoshape filter can't handle multiple shapes #3242
  • IndexUpgraderMergePolicy doesn't assign a field number to _version correctly #3237
  • Deleting or closing an index doesn't clean the memory properly #3232
  • ElasticSearch 0.90 fails when "highlight" contains a field of type "long" #3211
  • Indices stats "fielddata"  param was used to control idCache stats, not fieldData #3204
  • Don't reset TokenStreams twice when highlighting #3200
  • Field data should support more than 2B ordinals per segment #3189
  • NPE in query execution of boolean filter in 0.90.1 #3177
  • Timestamp index settings incorrectly stored #3174
  • MVEL infinite loop in its error handling causing cluster to degrade #3168
  • has_child & has_parent queries don't take deletes into account #3144
  • FVH can result in massive CPU & RAM usage if MultPhraseQuery is large #3142
  • FVH produces StringArrayIndexOutOfBounds if stored field is used #3140
  • has_parent query returning no results with multi level child docs. #3139
  • Update api doesn't support versioning #3111
  • Highlighting does not fail when the field to highlight is absent #3109
  • Dates passed to the script terms facet are now in the default time zone #3091
  • "No index mapper found for field" error  while bulk indexing #3088
  • String sorting incorrect after reindex #3078
  • ArrayIndexOutOfBoundsException in org.elasticsearch.index.fielddata.ScriptDocValues.Strings #3051
  • Mlt api doesn't serialize routing #3039
  • Phrase suggest direct generator possibly not obeying min_word_len 0.90 #3037
  • DFS modes can cause undefined behaviour in 0.90 #3012
  • NPE when using java client with DFS_QUERY_THEN_FETCH #3008
  • Get doc fails for some array fields #3000
  • BytesRefOrdValComparator ignores highest value in a segment during binarySearch #2991
  • PrimaryBalance in BalancedShardsAllocator can trigger unneeded relocation #2984
  • Percolating an item of a type that has a default _ttl mapping configured throws an error #2975
  • BalancedShardAllocator looses custom settings if un-related settings changed #2973
  • TransportAnalyzeAction causes StringIndexOutOfBoundsException on first attempt to analyze a numeric field #2953
  • Source exclusion mapping prevents geo shape coordinates to be returned in query result source field #2944
  • _source includes/excludes has no effect when getting documents by ID #2829
  • Debian package is now lintian compatible #2515
  • CompletionFieldMapper ignores path: just_name #3669
  • Elasticsearch (0.90.2) fails in large core (Ex: ~48) machine #3478
  • Highlighting: Highlighter still fails if broken analysis chains are used with fast vector highlighter #3006
  • Java API: Setting track scores does not affect scan search type #3949
  • Parent-Child: Properly cache parent child queries #2971
  • Plugins: Automatic detection of site plugins fails to copy over the content to @_site@ #3707
  • Query DSL: External terms doesn't work with _id field #3063
  • Query DSL: field_masking_span query parser not registered #3007
  • Query DSL: span_near query not working #2994
  • Query DSL: Wrong result on bool filter with 'must' and 'should' clauses #2979
  • Query String: Support multiple fields regexp queries #3901
  • Regresion: geo distance filter - filters out proper geohashes #3073
  • Thread pool: rename capacity to queue_size in node info response #3161
  • TransportAnalyzeAction causes IllegalArgumentException: NumericTokenStream does not support CharTermAttribute #2952