See issues on GitHub

Release Notes

Upgrade Notes:

  • Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (curl host:9200/_flush) before shutting down the cluster, with no indexing operations happening after the flush.
  • The local gateway state structure has changed, a backup of the state files is created when upgrading, they can then be used to downgrade back to 0.18. Don’t downgrade without using them.

Breaking changes:

  • Blank routing should be ignored (#1450)
  • Highlighting on term vector enabled field should not highlight filters by default (#1469)
  • Migrate built in plugins to their own repos (#1520)
  • Move project build to maven (#1523)
  • Move phonetic token filter to a plugin (#1594)
  • Improve serialization (stream) of UTF strings, note, requires flush when upgrading (#1595)
  • Date Histogram Facet: Improve time zone handling, add factor option (#1580)
  • Date Range: Inclusive upper range does not round up properly (#1463)
  • Java API: Move all request builders to org.elasticsearch.action… from org.elasticsearch.client.action (#1611)
  • Node Stats API: Add specific flags for stats, simplified REST paths (#1597)
  • Nodes Info API: Allow to specify which info to get back, simpler URI paths (#1596)
  • Thread Pool: Add a specific thread pool for bulk indexing operations (#1668)

New features:

  • Index shard search slow log (query and fetch) (#1462)
  • Upgrade to Lucene 3.5 (#1502)
  • Support Multicast discovery for external clients (#1532)
  • Set an index / indices to read only, or make the cluster read only (#1573)
  • Add query validation feature (#1574)
  • Add thread_pool to nodes info and nodes stats APIs (#1601)
  • Add generic execution of APIs to Client (and indices/cluster) and allow for plugins to register custom APIs (#1612)
  • Local Gateway: Store specific index metadata under dedicated index locations (#1631)
  • Plugins: Allow for plugins to implement onModule method that will be automatically injected with the relevant module type (#1613)
  • Search: Support partial fields that can returns partial view of the _source (#1570)
  • Update API: Allow to update a document based on a script (#1583)

Enhancements:

  • AbstractCompoundWordTokenFilterFactory should store the dictionary as a CharArraySet instance, not a Set (#1449)
  • XContentBuilder to handle extended classes of java.util.Date (#1465)
  • HTTPS support for CouchDB river (#1480)
  • Allow empty Strings to be null for Number’s and don’t autodetect empty string fields as string types (#1473)
  • By default, set http.compression to false (#1482)
  • DocumentMapper.java wrong order on build rootMappers (#1493)
  • Support using _id:1234, or using term query/filter on _id even when _id is not indexed (#1496)
  • Upgrade to netty 3.2.7 (#1506)
  • When _source is disabled, don’t return it in realtime get fetching the document from the transaction log (#1509)
  • Improve highlighting perf (a bit) by reusing some constructs across hits (#1513)
  • Allow to configure a shard with no file based data location locking (#1535)
  • source not returned when * specified in fields list (#1541)
  • Generate pid file even when running in foreground mode (#1553)
  • Improve multi field mapper with highlighting based on source (#1559)
  • Allow search to continue when sort field is missing from type mapping (#1558)
  • Filter cache to have just weighted (node) and none, and index query parser cache to be size based (#1590)
  • No master (startup / minimum_master_node) / not recovered blocks should cause proper failures on operations (#1589)
  • _open and _close does not resolve aliases (#1628)
  • Better failure when passing invalid options to a query/filter (#1640)
  • Allow for plugins to register REST filter (#1658)
  • AWS Plugin: Add more automatic region configuration (#1490)
  • Add a simplified setting to disable shutdown API: action.disable_shutdown (#1606)
  • Analysis:
    • Add language setting to lowercase filter, supporting greek and turkish (#1503)
    • Support greek language in the stemmer filter (#1504)
    • Add arabic, brazilian, czech to stemmer token filter language options (#1519)
    • Add phonetic encodder called bm or beider_morse (#1552)
  • Analyze API: Allow to execute it without pre-creating an index, and allow to build custom analyzer (tokenizer + token_filters) (#1555)
  • Boolean Type: Consider F as false as well when searching on it (#1556)
  • Date Histogram Facet: Add pre_offset and post_offset options (#1599)
  • Highlighter: Add require_field_match (both global and per field) option (#1577)
  • Highlighting: Add boundary_chars and boundary_max_size to control text boundaries with fast vector highlighter (term vector) (#1614)
  • Index Allocation: allow to specify maximum total number of shards per node (#1650)
  • Indices / Nodes stats: All all flag to easily return all stats (#1662)
  • JVM Flags: Remove SurvivorRatio and MaxTenuringThreshold since the defaults are good with new JVMs (#1672)
  • Jmx: Only register JMX beans when jmx.create_connector is set to true, or explicitly set by setting jmx.export to true (#1666)
  • Local Gateway: Move shard state to be stored under each shard, and not globally under _state (#1618)
  • Mapping:
    • Improve applying guessed types on dynamic templates (#1446)
    • _source mapping to allow for format to convert to (if needed) (#1639)
  • Merge Scheduler: Allow to set index.merge.scheduler.max_merge_count (#1430)
  • Multicast: Add discovery.zen.ping.multicast.ping.enabled setting to disable sending ping requests while still having multicast enabled (#1533)
  • Network: Allow to specify sub interfaces (virtual) in network configuration (#1667)
  • Node Stats:
    • Add fs level stats (size + iostats) (#1622)
    • JVM stats to provide memory pools allocations (#1665)
    • Add more options to get specific stats in REST: /nodes/fs/stats (in addition to /nodes/stats/fs) (#1674)
  • Plugins: If a plugin has a bin directory, move it under the main bin location under the plugin name (#1584)
  • Query: Add index.query.default_field allowing to control the default field used to search on (#1657)
  • Query DSL:
    • indices query to allow to set a no_match_query (#1492)
    • Replace index.query.bool.max_clause_count with indices.query.bool.max_clause_count (old one still supported) (#1538)
    • query_string analyze wildcard option with prefix to automatically do OR’ed wildcard when its broken down into several tokens (#1539)
    • Allow to default certain settings in query_string / field queries (#1540)
    • custom_filters_score allow score_mode for “min” and “multiply” (#1560)
    • Add different execution models for terms filter (#1568)
    • prefix query to support _id (#1648)
  • REST: / to properly return error code (HEAD and GET) when blocked (not recovered, no master), as well as cluster health (red == 503) (#1633)
  • River: When deleting a river, make sure when its closed that its data is deleted (#1534)
  • Scan Search: Improve performance while scrolling through it (#1579)
  • Thread Pool: Add a dedicated thread pool for refresh (#1624)
  • Translog: When not sync’ing on each operation, buffer writes (#1549)
  • Transport Client: Improve remote node freeze handling by adding another timeout layer (#1653)
  • bin: elasticsearch script to support ES_HEAP_SIZE to easily set the heap size to a single value (min and max) and ES_HEAP_NEWSIZE to optionally set the new gen (#1671)

Bug fixes:

  • External data location configuration fails (path.data setting) (#1429)
  • data.path locations are unevenly filled (0.18.2) (#1436)
  • Percolate / Analyzer API can hang if it fails to execute (#1457)
  • Using root object level mapping (_size, _source) can cause reparsing of the mapping on startup (#1458)
  • Nested facet execution can fail with ArrayIndexOutOfBounds (#1467)
  • Inner queries not resolved correctly in has_child filter when searching directly against the parent type (in the URI for example) (#1471)
  • Broken plugin script (#1474)
  • Thrift transport handling unexpected URI hangs (#1484)
  • IndicesQueryBuilder generates the wrong query name (#1485)
  • Multi field mapper with more than one extra mapping can cause endless re-sync’ing of mapping between nodes (#1487)
  • Using _parent:123 in a query string query fails to fetch docs (#1497)
  • Registering a percolate query with additional “object” level metadata can fail (#1505)
  • search missing from stats when using clear and search params (#1516)
  • Version missing a space (#1517)
  • Default mapping means new types not mapped explicitly (#1524)
  • timestamp term match broken in 0.18.5 (#1543)
  • 0.18.5 ignores query string analyzer (#1547)
  • Cluster metadata files destroyed when using blob store gateway causing data loss (#1564)
  • Nested objects not deleted on “delete by query” (#1537)
  • Two different indexes with the same nested object name causing ArrayIndexOutOfBoundsException (#1575)
  • TTL does not respect routing when expiring (deleting) documents (#1586)
  • Multi Get does not respect routing set on aliases (#1591)
  • Bulk API does delete item does not respect routing associated with an alias (#1592)
  • /_status doc count of index wrong (#1615)
  • 0.18.7 Failure exception while executing a valid query after an invalid query (#1617)
  • index.recovery.initial_shards is not being taken into account (#1623)
  • Removing a node with TRACE logging enabled causes cluster state not to be properly updated (#1626)
  • Published cluster state might override newer state (rarely) (#1632)
  • Terms Facet sorting does not handle null values properly with new JDK 7 sorting (#1647)
  • Cluster Allocation: cluster.routing.allocation.allow_rebalance does not allow for rebalancing on relocating shard (#1651)
  • Couchdb River: since changes parameter (seq) is not url encoded (#1470)
  • Index / Delete API: timeout should apply automatically to the auto create index API master timeout (#1664)
  • Indices Stats API: Providing groups as part of the HTTP API does not return stats for those groups (#1468)
  • Java API: ScriptSortBuilder does not pass the lang used (#1569)
  • Multicast Discovery: if it fails, still start in a single cluster mode (#1608)
  • Nested queries: getDocIdSet NullPointerException (#1536)
  • Query DSL:
    • Bool filter does not take should clauses properly into account (#1511)
    • query_string/field/text do not fail when an invalid analyzer is provided (#1663)
  • Search:
    • Fetching fields that end up extracted from source might fail (#1431)
    • Search requests execute by mistake on the networking http IO thread, causing other http operations to hang (#1455)
    • When searching against a type with a dfs search type, dfs is ignored (#1546)