Search & Analyze in Real Time

Elasticsearch is a distributed, open source search and analytics engine, designed for horizontal scalability, reliability, and easy management.

Get Product Updates

Elasticsearch 1.6.0

Elasticsearch can also be installed from our repositories using apt or yum. See Repositories in the Guide.

Installation Steps

  • Download and unzip the latest Elasticsearch distribution

  • Run bin/elasticsearch on Unix or bin/elasticsearch.bat on Windows

  • Run curl -X GET http://localhost:9200/
See Release Notes

Breaking changes

  • Benchmark:
    • Benchmark api: removed leftovers #10180
  • Highlighting:
    • Wildcard field names in highlighting should only return fields that can be highlighted #11364 (issue: #9881)
  • Network:
  • Snapshot/Restore:
    • Fix FSRepository location configuration #11284 (issue: #11068)

Deprecations

  • CRUD:
  • Java API:
    • Query DSL: deprecate BytesFilterBuilder in favour of WrapperFilterBuilder #11112 (issue: #10919)
    • Deprecate async replication #10642 (issues: #10114, #10171)
  • More Like This:
    • Deprecate the More-Like-This API in favour of the MLT query #10982 (issue: #10736)
  • Rivers:
    • Deprecate rivers #10503
    • Warning in documentation for deprecation of rivers #10423 (issue: #10345)
  • Network:
    • Deprecated the thrift and memcached transports #10167 (issue: #10166)
  • Parent/Child:
    • Deprecate the top_children query #11022 (issue: #6511)
  • Plugins:
    • Plugins: deprecate addQuery methods that are going to be removed in 2.0 #11532 (issue: #11481)
  • Scripting:
    • Deprecate Groovy sandbox and related settings #10478 (issue: #10156)
  • Search:
    • Deprecate delete-by-query in client/transport/action APIs too #10239 (issue: #10082)
  • Suggesters:
    • Deprecate filter option in PhraseSuggester collate #11445 (issue: #11195)

New features

  • Logging:
    • Add ability to specify a SizeBasedTriggeringPolicy for log configuration #10373 (issue: #10371)
  • Mapping:
  • REST:
    • API: Add response filtering with filter_path parameter #10980 (issue: #7401)
  • Recovery:
  • Scripting:
  • Search:
  • Settings:
  • Shadow Replicas:
    • Allow shards on shared filesystems to be recovered on any node #10960 (issue: #10932)
  • Stats:

Enhancements

  • Allocation:
    • Async fetch of shard started and store during allocation #11262 (issues: #11101, #9502)
    • When using recover_on_any_node on shared filesystem, respect Deciders #11168
    • Early terminate if the cluster can't be rebalanced #9162
  • Analysis:
    • Document and test custom analyzer position_offset_gap #10934 (issue: #1812)
  • CAT API:
  • Cluster:
  • Core:
    • Add node setting to send SegmentInfos debug output to System.out #11546
    • Reduce shard inactivity timeout to 5m #11479 (issues: #11179, #11336)
    • Fail shard if search execution uncovers corruption #11440 (issue: #11419)
    • Acquire IndexWriter's write.lock lock before shard deletion #11127 (issue: #11097)
    • Refactor TransportShardReplicationOperationAction #10749 (issue: #10032)
    • Make getFileStore a bit more defensive #10696
    • Ref count write operations on IndexShard #10610
    • Refresh if many deletes in a row use up too much version map RAM #10312 (issue: #7052)
  • Discovery:
    • Prevent over allocation for multicast ping request #10896
    • Unicast Ping should close temporary connections after returning ping results #10849
  • Engine:
    • Remove reflection call to waitForMerges #10102
  • Geo:
    • Add merge conflicts to GeoShapeFieldMapper #10533 (issues: #10513, #10514)
    • Coordinates can contain more than two elements (x,y) in GeoJSON parser. #9542 (issue: #9540)
  • Index APIs:
    • Add check to MetaData#concreteIndices to prevent NPE #10342 (issue: #10339)
  • Indexed Scripts/Templates:
    • Indexed scripts/templates: return response body when script is not found #10396 (issue: #7325)
    • Indexed Scripts/Templates: Return error message on 404 #7335 (issue: #7325)
  • Internal:
    • Removed generic types from ContextAndHeaderHolder and HasHeaders#putHeader() #11231
    • Wait forever (or one day) for indices to close #10833 (issue: #10680)
    • Don't create a new BigArrays instance for every call of withCircuitBreaking #10800 (issue: #10798)
    • Change BigArrays to not extend AbstractComponent #10798
    • CommitStats doesn't need to allow for null values in commit user data #10774 (issue: #10687)
    • Add fairness option to KeyedLock. #10703
    • Fix string comparisons #10204
    • Remove unsafe field in BytesStreamInput #10157
    • Fix errors reported by error-prone #9817
    • Reduce the size of the search thread pool. #9165 (issue: #9135)
  • Java API:
    • Unify SearchResponse and BroadcastOperationResponse code around shards header #11064
    • Remove duplicated consistency level and replication type setters #10188
  • Logging:
    • Display low disk watermark to be consistent with documentation #11313 (issue: #10588)
    • Add index name to log statements when settings update fails #11124
    • Add logging of slow cluster state tasks #10907 (issue: #10874)
    • Log sending translog operation batches to nodes #10544
    • Log only a summary line of filesystem detail for all path.data on node startup #10527 (issue: #10502)
    • Add INFO logging saying whether each path.data is on an SSD #10502
    • Use static logger name in Engine.java #10497
    • Miscellaneous additional logging and cleanups #10376
    • Change logging to warning to match pattern #9593
    • Reduce apache (cloud-aws) logging when rootLogger is DEBUG #8856
  • Network:
    • Default value for socket reuse should not be null #11255
    • Make Netty exceptionCaught method protected #10464
    • Remove content thread safe from REST layer #10429
    • Add getter for channel in NettyTransportChannel #10319
    • Schedule transport ping interval #10189
    • Return useful error message on potential HTTP connect to Transport port #10108 (issue: #2139)
  • Packaging:
    • Export hostname as environment variable for plugin manager #11399 (issues: #10902, #9474)
    • Exclude jackson-databind dependency #10924
    • Add common SystemD file for RPM/DEB package #10725
    • Standardization of packages structure and install #10595 (issue: #10330)
    • Add properties files to configure startup and installation scripts #10330
    • service.bat file should explicitly use the Windows find command. #9532
    • Export the hostname as environment variable #9474 (issue: #8470)
  • Plugins:
    • Use of default CONF_DIR/CONF_FILE in plugin install #10721 (issues: #10673, #7946)
    • Always send current ES version when downloading plugins #10131
  • Query DSL:
    • Function score: Add default to field_value_factor #10845 (issue: #10841)
  • REST:
    • Unify query_string parameters parsing #11057
    • HttpServer: Support relative plugin paths #10975 (issue: #10958)
    • Remove global source parameter from individual APIs in REST spec #10863
    • Better detection of CBOR #10026 (issue: #7640)
    • Remove indices_boost URL param #9244 (issue: #6281)
  • Recovery:
    • Reduce cluster update reroutes with async fetch #11421
    • Check if the index can be opened and is not corrupted on state listing #11269 (issue: #11226)
    • Allow to recover into a folder containing a corrupted shard #10558
    • Only cancel recovery when primary completed relocation #10218
  • Scripting:
    • Allow plugins to define custom operations that they use scripts for #10419 (issue: #10347)
  • Search:
    • Single value numeric queries shouldn't be handled by NumericRangeQuery #10648 (issue: #10646)
  • Settings:
    • Make prompt placeholders consistent with existing placeholders #11514 (issues: #10918, #11455)
  • Shadow Replicas:
    • Implement retries for ShadowEngine creation #10688 (issue: #10637)
    • Allow rebalancing primary shards on shared filesystems #10585 (issue: #10469)
  • Snapshot/Restore:
    • Add support for applying setting filters when displaying repository settings (Backport to 1.6) #11431 (issue: #11265)
    • Check that reading indices is allowed before creating their snapshots #11133
    • Don't throw an exception if repositories are unregistered with * #11113
    • Improve the error message when attempting to snapshot a closed index #10608 (issue: #10579)
    • AbstractBlobContainer.deleteByPrefix() should not list all blobs #10366 (issue: #10344)
    • Batching of snapshot state updates #10295
    • Expand wildcards in snapshot #9903 (issue: #6097)
  • Stats:
    • Add CommitStats to supply information about the current commit point #10687
  • Store:
    • Consolidate directory lock obtain code #11390
  • Suggesters:
    • Phrase Suggester Collate Enhancements #10710 (issue: #9377)
  • Translog:
    • Use buffered translog type also when sync is set to 0 #10993
    • Remove useless random translog directory selection #10589
  • Upgrade:
    • Upgrade Jackson to 2.5.3 #11307
    • Upgrade to Netty 3.10.3 #11304
    • Update forbiddenapis to version 1.8 #10555
    • Upgrade to Jackson 2.5.1 #10210
    • Upgrade to Jackson 2.5.1 #10134
  • Upgrade API:
    • Refactor upgrade API to use transport and write minimum compatible version that the index was upgraded to #11333 (issues: #11072, #11095)
    • Add upgrade_only_ancient_segments option to upgrade API #10540 (issue: #10213)

Bug fixes

  • Aggregations:
    • Allow aggregations_binary to build and parse #11473 (issue: #11457)
    • Fix geo bounds aggregation when longitude is 0 #11090 (issue: #11085)
    • Fixes Infinite values return from geo_bounds with non-zero bucket-ordinals #10917 (issue: #10804)
    • Fix _as_string output to only show when format specified #10571 (issue: #10284)
  • Allocation:
    • GatewayAllocator: reset rerouting flag after error #11519 (issue: #11421)
  • Analysis:
    • Custom analyzer names and aliases must not start with _ #11303 (issue: #9596)
    • Fix tokenizer settings in SynonymTokenFilterFactory #10489
  • Bulk:
    • Allow null values in the bulk action/metadata line parameters #11459 (issue: #11458)
    • Throw exception if unrecognized parameter in bulk action/metadata line #11331 (issue: #10977)
    • _default_ mapping should be picked up from index template during auto create index from bulk API #10762 (issue: #10609)
    • Removed duplicate timeout param #10205
  • CAT API:
    • _cat/nodes: Thread null handling through stats and info #9938 (issue: #6297)
  • CRUD:
    • detect_noop now understands null as a valid value #11210 (issue: #11208)
    • The parent option on update request should be used for upsert only. #9612 (issue: #4538)
  • Cache:
  • Cluster:
    • ClusterHealth shouldn't fail with "unexpected failure" if master steps down while waiting for events #11493
  • Core:
    • Improve exception message when shard has a partial commit (segments_N file) due to prior disk full #11539 (issue: #11249)
    • Use System.nanoTime for elapsed time #11058
    • Lucene merges should run on the target shard during recovery #10463 (issue: #9226)
    • Increase default rate limiting for snapshot, restore and recovery to 40 MB/sec #10185 (issue: #6018)
  • Dates:
  • Engine:
    • Ignore 3x segment upgrade if unneeded #11383 (issue: #11361)
    • Sync translog before closing engine #10484
  • Geo:
    • Fix OOM for high precision exotic shapes #10652 (issues: #10583, #2361, #9860)
    • Correct ShapeBuilder coordinate parser to ignore values in 3rd+ dimension #10539 (issue: #10510)
    • Fix hole intersection at tangential coordinate #10332 (issue: #9511)
  • Highlighting:
    • Use analyzer set on the field #8943 (issue: #8757)
  • Index APIs:
    • Remove expansion of empty index arguments in RoutingTable #10148 (issue: #9081)
  • Indexed Scripts/Templates:
  • Inner Hits:
    • Fix multi level parent/child bug #11199
    • Make sure size=0 works on the inner_hits level. #10388 (issue: #10358)
    • Make sure inner hits also works for nested fields defined in object field #10353 (issue: #10334)
    • Fix bug where parse error is thrown if a inner filter is used in a nested filter/query. #10309 (issue: #10308)
    • Fix nested stored field support. #10235 (issue: #9766)
  • Internal:
    • Make JNA optional for tests and move classes to bootstrap package #11378 (issue: #11360)
    • Fix CompressedString.equals. #11233
    • ThreadPool: make sure no leaking threads are left behind in case of initialization failure #11061 (issue: #9107)
    • Propagate headers & contexts to sub-requests #11060 (issue: #10979)
    • Fix NPE in PendingDelete#toString #11032
    • Search: FielddataTermsFilter equality is based on hash codes  #10728
    • Ensure that explanation descriptions are not null on serialization #10689 (issue: #10399)
    • Fix possible NPE in InternalClusterService$NotifyTimeout, the future field is set from a different thread #10630 (issue: #3)
    • Allow ActionListener to be called on the network thread #10573 (issue: #10402)
    • Add missing hashCode method to RecoveryState#File #10501
    • Don't try to send a mapping refresh if there is no master #10311 (issue: #10283)
    • Close all resources if doStart fails #9898
  • Java API:
    • Add missing rewrite parameter to FuzzyQueryBuilder #11139 (issue: #11130)
    • Ensure netty I/O thread is not blocked in TransportClient #10644
    • toString for SearchRequestBuilder and CountRequestBuilder #9944 (issues: #5555, #5576)
  • Logging:
    • Add filename to corruption message #10110 (issue: #10062)
    • Fix potential NPE in new tracer log if request timeout #9994 (issue: #9286)
  • Mapping:
    • numeric_resolution should only apply to dates provided as numbers. #11002 (issue: #10995)
    • Unneccesary mapping refreshes caused by unordered fielddata settings #10370 (issue: #10318)
    • Fixed an equality check in StringFieldMapper. #10359 (issue: #10357)
    • Fix _field_names to be disabled on pre 1.3.0 indexes #10268 (issue: #9893)
    • Fix ignore_malformed behaviour for ip fields #10112
    • Update dynamic fields in mapping on master even if parsing fails for the rest of the doc #9874 (issue: #9851)
  • Network:
    • Transport: fix racing condition in timeout handling #10220 (issue: #10187)
  • Parent/Child:
  • Percolator:
    • Prevent PercolateResponse from serializing negative VLong #11138
    • Fix wrong use of currentFieldName outside of a parsing loop #10307
  • Plugins:
    • Only load a plugin once from the classpath #11301
    • HTTP: Ensure url path expansion only works inside of plugins #10815
  • Query DSL:
    • Score value is 0 in _explanation with random_score query  #10742
    • Avoid NPE during query parsing #10333
    • Function score: Apply min_score to sub query score if no function provided #10326 (issue: #10253)
    • function_score: undo "Remove explanation of query score from functions" #9826
  • REST:
    • fielddata_fields query string parameter was ignored. #11368 (issue: #11025)
    • REST spec for termvector missing paths on 1.x branch #11087 (issue: #11086)
  • Recovery:
    • Don't write recoveryType twice #11347 (issues: #11179, #11335)
    • Decrement reference even if IndexShard#postRecovery barfs #11201
    • Fail recovery if retry recovery if resetRecovery fails #11149
    • Refactor state format to use incremental state IDs #10316
    • RecoveryState.File.toXContent reports file length as recovered bytes #10310
    • Fail shard when index service/mappings fails to instantiate #10283
  • Scripting:
    • Allow script language to be null when parsing #10976 (issue: #10926)
  • Search:
    • Release search contexts after failed dfs or query phase for dfs queries #11434 (issue: #11400)
    • Don't truncate TopDocs after rescoring #11342 (issues: #11277, #7707)
  • Search Templates:
    • Fix JSON encoding for Mustache templates. #10820 (issue: #5473)
  • Settings:
    • Prevent changing the number of replicas on a closed index #11410 (issue: #9566)
    • Read configuration file with .yaml suffix #10909 (issue: #9706)
    • Validate number_of_shards/_replicas without index setting prefix #10701 (issue: #10693)
    • Fix handling of IndicesOptions in update settings REST API #10030
  • Snapshot/Restore:
    • Sync up snapshot shard status on a master restart #11450 (issue: #11314)
    • Fix check for locations in a repository path #11426
    • Don't reuse source index UUID on restore #10367
    • Separate repository registration #10354 (issue: #10351)
    • Automatically add "index." prefix to the settings are changed on restore if the prefix is missing #10269 (issue: #10133)
  • Store:
    • Fix stream version check in ShardActiveRequest #11407
    • Ensure we mark store as corrupted if we fail to read the segments info #11230 (issue: #11226)
    • Fix NPE when checking for active shards before deletion #11110 (issue: #10172)
    • Shard not deleted after relocation if relocated shard is still in post recovery #10172 (issue: #10018)
  • Suggesters:
    • Ensure empty string completion inputs are not indexed #11158 (issue: #10987)
    • Ensure collate option in PhraseSuggester only collates on local shard #11156 (issue: #9377)
    • Make GeoContext mapping idempotent #10602 (issues: #10581, #8937)
    • Return an HTTP error code when a suggest request failed instead of 200 #10104
  • Term Vectors:
    • ShardTermVectorsService calls docFreq() on unpositioned TermsEnum #10660
  • Translog:
    • Acquire index writer lock before renaming translog file #11396
    • Fail #snapshot if translog is closed #10809 (issue: #10807)
  • Upgrade API:
    • Use the smallest version rather than the default version #11475 (issue: #11474)