13 November 2013

0.90.7 released

By Clinton Gormley

Today we are happy to announce the release of elasticsearch 0.90.7, which is based on Lucene 4.5.1. This is the current stable release in the 0.90 series and we recommend upgrading. You can download it here.

This is largely a bug fix release. Most changes deal with edge cases (you can read about them in the release notes) but there are a few important fixes which are worth mentioning:

Norms and memory use

In an effort to make Elasticsearch as responsive as possible, 0.90.6 introduced a change which loaded all field norms into memory whenever a new merged segment was created. For some users, this turned out to be an optimization too far. Field norms provide statistics about field length and are an important variable in TF/IDF, Lucene’s default similarity algorithm.

However, they are only useful when you actually run a full-text query on a field. Many users, especially our Logstash users, store many text fields in Elasticsearch which they never search on, which means that we never need to load the norms for these fields. This “eager” loading of norms used up much more RAM than before.

In 0.90.7 we reverted this change (see #4078) and in a later version we will add a per-field option which will allow you to opt in to eager norms loading, where it makes sense for you. See #4079.

Lucene and memory use

A bug in Lucene was causing a delay in cleaning up old files which manifested itself in increased memory use, especially when using the memory store. This bug has been fixed in Lucene 4.6 and the fix has been backported to this release as well. See #4093.

Postings highlighter

The newly added Postings highlighter got off to a false start. Highlighting worked just fine... until there was more than one segment. (Note: you can never have too many tests). See #4103. It also failed on fields whose index name and field name were different. See #4116. And finally, an enhancement! The postings highlighter now also supports a separate highlight_query. See #4121.


  • The has_child filter would occasionally throw an error when it matched many parents. See #4135.
  • A bool filter which combined a must_not clause with a geo filter could produce too few results. See #4144.
  • The improvements in cluster state changes resulted in a race condition which caused newly added rivers to fail. See #4089.

Details of other changes are available in the release notes.

Many thanks to everybody who submitted bug reports and pull requests. Your help is greatly appreciated.