See issues on GitHub

Release Notes

Upgrade Notes:

  • Upgrading from 0.19 requires a full cluster restart.

Breaking changes:

  • Introduce Text abstraction, allowing for improved representation of strings, apply to HighlightedField (breaks backward for Java API from String to Text) (#2093)
  • Stored binary fields to change internal representation (break Java API if used) (#2092)
  • Transport: Add header token allowing to more easily identify when illegal content is being sent (#2280)

New features:

  • Add types exists api (#2273)
  • Add has_parent query (#2254)
  • Add has_parent filter (#2243)
  • Add ignore_indices option (#2209)
  • Bulk UDP (#2201)
  • Explain API (#2184)
  • Support GeoShape searching and indexing (#2169)
  • Multi match query (#2153)
  • Cluster Nodes hot_threads API (#2134)
  • Support wildcard and +/- notation for multi index APIs (#2074)
  • Auto import dangling indices (#2067)
  • Store Throttling (node level and/or index level) with options on merge or all (#2041)
  • Stored Fields Compression (#2037)
  • Allow to customize quote analyzer to be used when quoting text in a query_string (#1931)
  • Index Warmup API (#1913)
  • Upgrade to Lucene 3.6 (#1862)
  • Cluster Reroute API: Allow to specify allocation commands (#2256)
  • Compression: Support snappy as a compression option (#2081)
  • Create Index: Allow to provide index warmers when creating an index (#1917)
  • Index Blocks: Add index.blocks.write, index.blocks.read, and index.blocks.metadata settings (#1771)
  • Index Template: Allow to register index warmers in an index template (#1916)
  • Mapping: Add index_options (deprecating omit_term_freq_and_positions) (#2346)
  • Query DSL: query_string syntax to support wildcard fieldnames in the query text (#1936)
  • Store Compression: Term Vector Vector (#2049)
  • Update API: Allow to upsert, provide a doc and index it if the doc does not exists (#2008)

Enhancements:

  • Auto create index to support white/black lists of index patterns (#2344)
  • Upgrade to netty 3.5.8 (#2299)
  • Upgrade to Spatial4j 0.3 (#2268)
  • Add id cache size to nodes stats api (#2264)
  • Add better error handling for has_child, has_parent and top_children. (#2261)
  • Include bloom & id cache size in node stats api (#2259)
  • Improve has_child filter / query performance (#2251)
  • Upgrade to netty 3.5.7 (#2240)
  • Upgrade to mvel 2.1.1 (#2228)
  • Add fields options to explain api (#2203)
  • Reduce index.shard.recovery.concurrent_streams from 5 to 3 to reduce the load when doing recovery (#2198)
  • Upgrade to netty 3.5.5 (#2196)
  • MinimumNumberShouldMatch inconcistency (#2194)
  • Support YAML as content type (#2190)
  • Upgrade to Netty 3.5.4 (#2180)
  • Add lenient option to match & multi_match queries (#2156)
  • Rename text query to match query (text query still works, with variants) (#2150)
  • word_delimiter token filter does not honor “type_table” option. (#2145)
  • Improve recovery time when processing large mappings (#2138)
  • Increase default recovery chunk size (#2125)
  • Upgrade to Netty 3.5.3 (#2119)
  • ShingleTokenFilterFactory doesn’t expose all relevant settings (#2116)
  • Upgrade to Lucene 3.6.1 (#2110)
  • Upgrade to Netty 3.5.2 (#2084)
  • getSourceAsString() for doc inserted as SMILE fails, auto convert to JSON (#2064)
  • Use bloom filter when flushing (applying deletes) (#2058)
  • “index_analyzer” and “search_analyzer” should override “analyzer” (#2052)
  • Return 503 when threadpool limit is reached (#2048)
  • Allow to pass es.default. settings to the process, using it as default value unless specified in the config file (#2016)
  • Allow to filter client and “just” data nodes from controlling elected master (default client to true) (#2014)
  • Upgrade to Netty 3.5.0.Final (#2013)
  • Upgrade to Netty 3.4.5 (#1958)
  • Upgrade to guava 12.0 (#1920)
  • Binary field is stored by default, allow to disable it (#1919)
  • Upgrade to netty 3.4.3.Final (#1914)
  • Upgrade to Netty 3.4.2 (#1909)
  • Upgrade to jackson 1.9.7 (#1908)
  • Support Java Date when serializing update parameters (#1902)
  • Upgrade to Netty 3.4.1.Final (#1878)
  • Better handling of fields that have . in their name when doing property based navigation (#1875)
  • Upgrade to Netty 3.4.1 (#1863)
  • add an index level setting to disable/enable purging of expired docs (is… (#1808)
  • Have streams provided to gateway (shared one) allow marking (#1803)
  • Highlighting using the default highlighter (not using term vectors) only highlights on the first 50*1024 chars (#1796)
  • Java API for require_field_match (#1795)
  • Add an index level setting to disable/enable purging of expired docs (#1791)
  • Add cache thread pool to handle cache loading of async caches (bloom filter) (#1777)
  • Init script in Debian package ignores some options in elasticsearch.yml (#1765)
  • All Field: Automatically detect when field level boosting is used, and optimize when its not (#2189)
  • Analysis: Custom analyzer to allow to configure position_offset_gap and offset_gap (#1812)
  • Bulk API: Allow to control if its compressed or not using action.bulk.compress (defaults to true which is current behavior) (#1850)
  • Date Histogram Facet: Add quarter as an interval (#1884)
  • Debian: Update deps to be on openjdk-7-jre-headless first, then 6 (#1929)
  • Disable allocation: New indices allocation not to be disabled by default (#2258)
  • Discovery: Join process to better validate join request (#2019)
  • Get: Add a specific get thread pool that handles get request (#1778)
  • Get API:
    • Allow to provide a parent value which automatically set the routing value (#1961)
    • When _source is disabled, the source is still used if fetched from the transaction log (#1927)
  • Index level allocation filtering: Add _host option (#1991)
  • Java API: Improve TransportClient in sniff mode to be more lightweight on connections and API (#1898)
  • Java API Query DSL: Add wrapper filter similar to wrapper query accepting a json filter in raw format (#1844)
  • Mapping:
    • index.mapping.ignore_malformed global index setting (#2220)
    • String type to allow for a “ignore_above” size parameter, above which it will ignore the content (#2121)
    • Numeric/Date types to have a flag to ignore wrongly formatted values (#2120)
    • Allow to specify enabled set to false on a property without specifying the type (#1959)
    • Allow to configure position_offset_gap for string mapping (#1813)
  • Multi Search API: Allow to set search_type on REST endpoint URI to apply to all search requests (#2023)
  • Network: Add network.address.serialization.resolve setting (defaults to false) to always resolve publish address based on host name (#1899)
  • Node Stats:
    • Add jvm buffer pools stats (when available, for java 7 and above) (#2122)
    • Add timestamp per node stats element (#1851)
  • Nodes level API: Allow to specify data:true to only execute the APIs on data nodes (#2232)
  • Percolator Index: Don’t index the query element in a percolated query (#1949)
  • Query DSL:
    • Add more fuzzy options in different queries (text, query_string/field) (#1974)
    • Add max_boost to custom_filters_score to cap boosting (#1973)
    • term/terms filter performance improvement (bulk reading) (#1972)
    • text query to support minimum_should_match (#1971)
    • Add null_value and existence to missing filter, filtering both null values and missing fields (#1969)
    • Add null_value and existence to missing filter, filtering both null values and missing fields (#1970)
    • filtered query to support null filter or {} filter (in which case, just the query is executed) (#1900)
    • term filter to support the more “complex” form similar to term query (#1830)
    • indices filter type (#1787)
  • Query String: Add lenient flag to support value parse failures (#1932)
  • Query String URI: Add lenient to the URI q parameters. (#1937)
  • Rest API: Add HEAD support for /{index}/{type}/{id} to quickly check if doc exists or not (#2047)
  • Scripting: Allow to disable dynamic script execution (#1763)
  • Search Preference: Add _shards prefix to explicitly list shards, and add _prefer_node option (#1904)
  • Search/Get: Add preference option of _primary_first trying to primary first and then replicas (#1824)
  • Shard Allocation: index.routing.allocation.... settings do not “remove” the setting on empty string (#2229)
  • Support for Latvian stemming: latvian analyzer and latvian language for stemmer filter (#1842)
  • Terms filter: Add or and or_nocache execution modes (#2306)
  • Thread Pool: Allow to configure the queue_type for fixed thread pool (linked/array), defaults to array (#2086)
  • Transport Client:
    • Add client.transport.ignore_cluster_name to ignore the cluster name validation, defaults to false (#1910)
    • When adding an address was already added, ignore it (#1906)
  • Transport/Http: Remove explicit setting of send/receive buffer, and improve netty receive buffer predictor (#2124)
  • Update API: Allow to specify fields in the request to return updated fields (#1838)
  • Update Settings API: Allow body request to be wrapped with settings element to conform with other APIs (#2227)

Bug fixes:

  • Aliases API times out when actions end up with no actual change to aliases (#2345)
  • Highlighting fails for ConstantScoreQuery (#2332)
  • Setting index_analyzer incorrectly sets analyzer (#2329)
  • has_child / has_parent filters can throw NPE when either child or parent documents aren’t indexed yet (#2297)
  • query_string on multiple fields with “*” fails in 0.19.9 (#2296)
  • Bulk Delete item when broadcast to all shard (lack of routing) might not be applied correctly (#2285)
  • custom_filters_score with score_mode first doesn’t return explanation correctly (#2283)
  • failed shard while its being the source of relocation can cause inconsistent cluster state (#2242)
  • Field boosts not used in multi_match query (#2241)
  • Explain api opens 2 engine searchers, but closes only 1 engine searcher, causing resource leak (#2206)
  • 0.19.9 no longer supports /all/status (#2205)
  • IndexMissingException when calling _mlt on client node (#2197)
  • Incorrect application of boost in SpanNotQueryBuilder (#2192)
  • (full) recovery memory based indices with local gateway, don’t fail them (#2077)
  • Exists API can send response body (#2072)
  • dangling index handling might still remove the state files for the dangling index (#2065)
  • Setting index to no ends up using by default the “keyword” analyzer on it, which means one can’t highlight on it when searching on _all (#2062)
  • deb package fails to start elasticsearch (#2053)
  • elasticsearch fails to start due to verification error (#2051)
  • Failure to recover properly on node(s) restart (#2046)
  • Improve cluster resiliency to disconnected sub clusters + fix a shard allocation bug with quick rolling restarts (#2042)
  • fix bug index.ttl.disable_purge should be in IndexMetaData (#2020)
  • .DS_Store file in .deb package (#2017)
  • Quoted query_string gives NullPointerException with not_analyzed field (0.19.4) (#2006)
  • TransportClient does not load plugins (#1982)
  • Get mapping with no index specified on an empty cluster returns 404 (#1976)
  • Index Templates settings provided in a config file fails to load properly (#1960)
  • GET document response returns exists field twice (#1926)
  • River name re-use not possible between node shutdowns (#1921)
  • When setting index.recovery.initial_shards in the config file, it is ignored (#1912)
  • ClassCastException during percolation query (#1905)
  • When a node disconnects from the cluster (not enough master nodes, or a client node) and rejoins it might not update its internal routing table (#1896)
  • JDK 7 requires minimum of 256k stack size, update scripts to set it (#1892)
  • On recovery (startup), the recovery translog file handle is not properly closed (#1866)
  • NullPointerException in geo_distance_range without to (#1865)
  • XContentBuilder throws NPE on null Boolean (#1853)
  • Setting index.auto_expand_replicas in the elasticsearch config file does not apply (#1852)
  • Number of replicas setting can not be set on a closed index (#1845)
  • Relocation of shards causes bulk indexing client to hang (#1839)
  • Disabling deletion of all indices does not work when using _all (#1834)
  • requesting fields=timestamp,source won’t return _source (#1833)
  • Getting _settings or _mapping for non-existing index returns 200 OK (#1828)
  • TransportClient (sniff) fails to reconnect to nodes once removed if all nodes are removed (#1819)
  • TransportClient hangs when in sniff mode and no node running (#1818)
  • Indexing a document in smile format and getting it through REST in json format fails (#1816)
  • Index Update Settings API does not update settings in real time (#1807)
  • Get/MultiGet API with no type provided and doc does not exists causes a failure (#1794)
  • When node.data is set to false, the upgrade shards process from 0.18 fails (#1793)
  • IOException when restricting fields and returning nested arrays. (#1774)
  • mlt_field doesn’t support boost (#1773)
  • Closing a shard can cause a search/stats request that tries to acquire a handle to search while its closing to spin (#1772)
  • RemoteTransportException on _analyze request to specific index (#1770)
  • Special host config notation _[interfaceName]_ might fail to resolve the host address (#1754)
  • Date Histogram facet fails with “pre_zone” : “+02:00” (#2141)
  • ElasticSearchIllegalStateException: stream marked as compressed, but no compressor found on transport layer (#2076)
  • Highlighting: Using “plain” (non term vector) highlighting with custom score within a filtered query fails to highlight (#1894)
  • Index Merge Scheduler: Configuring using serial fails to load (#1901)
  • Java API: Calling SearchHit#sourceAsString will not decompress the source to convert it to string (#1814)
  • Local Gateway: old global state files are not properly deleted (#2085)
  • Mapping:
    • Using default mapping type with _source excludes (or array based config) can cause the array to grow indefinitely (#2317)
    • Using default mapping _routing mapping definition fails to apply when introducing type through indexing (#1967)
    • default mapping with dynamic templates can cause them to double on each restart (#1964)
  • Node Stats: OS stats reporting free as the key instead of used (#1804)
  • Percolator:
    • Registering (indexing) a new percolator query will still be stored in memory if actually indexing it fails (#1965)
    • Wrongly using analyzer configured for the actual index on percolator filtering (#1948)
    • Filtering percolators based on a query can cause wrong matches to be returned (#1925)
  • Shutdown API: When sending an “all” shutdown, it also shutsdown node clients (#1939)
  • Store Compression: integer overflow causes failed reads (index is safe) (#2071)
  • Stored Compression: failure to fetch document in certain cases (read failure, index compression works) (#2055)
  • Translog: Buffering translog does not write directly to the file channel but to RAF, which causes problems reading from the channel on windows (#1887)
  • Update API: Update through an alias with routing configured on it fail to use the routing (#2155)
  • deb: ES_HEAP_SIZE not exported (#1947)