05 November 2014 Engineering

Elasticsearch 1.4.0 And 1.3.5 Released

Von Clinton Gormley

Today, we are happy to announce the release of Elasticsearch 1.4.0, based on Lucene 4.10.2, and of bug fix release Elasticsearch 1.3.5. You can download them and read the full changes list here:

For blog posts about past releases in the 1.3 branch, see: 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0.

As we said with the Beta1 release, the major theme of 1.4.0 is resiliency: making Elasticsearch more stable and reliable than ever before, with better memory management, improved discovery algorithms, and better detection of corrupted data. Some highlights from the Beta1 release include:

  • Doc values (fielddata written to disk at index time) greatly reduces heap usage.
  • Request circuit breaker to abort search requests which consume too much memory.
  • Bloom filters are disabled by default as they are no longer needed for fast indexing.
  • Numerous bug fixes and improvements in node discovery and shard recovery.
  • Increased use of checksums to detect data corruption early.
  • Groovy replaces MVEL as the default scripting language.
  • CORS is disabled by default to prevent XSS attacks.
  • Query cache to return aggregation results instantly on shards that have not changes.
  • New aggregations: filters (docs), children (docs), and scripted_metric (docs).
  • A new GET /index API which returns index settings, mappings, warmers, and aliases in a single request (docs).
  • Flake IDs for auto-generated document IDs, which improve primary key lookup performance.
  • Updates which don't make any change to the document can avoid reindexing the document.
  • Functions in the function_score query can be individually tuned with the weight parameter (docs).

Please read the 1.4.0.Beta1 blog post for more details.

You can read about all of the changes that have gone into 1.4.0 since Beta1 in the 1.4.0 release notes, but there are two major changes which deserve to be highlighted:

HTTP Pipelining

HTTP pipelining is the ability to send multiple requests on a single connection without waiting for the corresponding responses, and that responses should be returned in the same order that the requests were received. The HTTP/1.1 spec requires support for pipelining. While Elasticsearch has always advertised HTTP/1.1, it has never supported pipelining, which has caused problems especially for our .NET users.

HTTP pipelining is now officially supported, and is enabled by default. See #8299.

Upgrade API

Every release of Lucene brings with it bug fixes and optimizations, but many users have indices that were created with old versions of Lucene and which cannot take advantage of more recent improvements. The new upgrade API allows you to transparently upgrade any or all of your indices to the latest Lucene format.

The GET _upgrade request will tell you which indices need to be upgraded, and gives you an indication of how much work is involved by reporting the size of the segments that need to be upgraded. The POST _upgrade command will rewrite an index in the background into the latest Lucene format.

See the upgrade API documentation for more information.

Try it out

Thanks to all our beta testers who reported their experiences with the Beta1 release. We are confident that 1.4.0 is going to be our best release yet. Please download Elasticsearch 1.4.0, try it out, and let us know what you think on Twitter (@elasticsearch). You can report any problems on the GitHub issues page.