Tech Topics

Elasticsearch 1.2.1 Released

We released Elasticsearch 1.2.1 today. This is a bug fix release that includes the fix for a severe bug in Elasticsearch 1.2.0. We recommend that anyone using version 1.2.0 upgrade immediately to this 1.2.1 release. We removed the 1.2.0 release from our download site and repositories due to the severity of the bug.

A Fix for Document Routing and Duplicate Documents

There was a routing bug in Elasticsearch 1.2.0 that could have a number of bad side effects on the cluster. Possible side effects include:

  • documents that were indexed prior to the upgrade to 1.2.0 may not be accessible via get. A search would find these documents, but not a direct get of the document by ID.
  • documents that were updated after the upgrade to 1.2.0 may be duplicated, with one copy from pre-1.2.0 and a second copy updated since the upgrade to 1.2.0.
  • if a document is duplicated as above, and versioning is in use, the document added after the upgrade to 1.2.0 will have its version reset.

The 1.2.1 release fixes this bug. The bug fix will restore access via get to the documents that were indexed prior to the upgrade to 1.2.0.

An upgrade to 1.2.1 will not correct duplicate documents. Also, an upgrade to 1.2.1 will break access via get to documents that were indexed since the upgrade to 1.2.0.  We are investigating what tools we can create to help with the diagnosis and correction of these problems. We will post an update as soon as possible with this information.

Other Fixes

Elasticsearch 1.2.1 also fixes a bug with the new aggregations circuit breaker. We found that the enhancement to constrain aggregations memory usage was too conservative and could prevent memory requests that should have been allowed. We have effectively disabled this new circuit breaker for 1.2.1. The fielddata circuit breaker continues to work as it has in previous releases.

There is also a bug fix for mapping parsing. A mapping that contained the parameter include_in_all in the root type would produce a MapperParsingException. For example:

PUT test1
{
  "mappings": {
    "type_name": {
      "include_in_all": false,
      "properties": {}
    }
  }
}

would trigger the bug, effectively removing this feature from 1.2.0. If such a mapping is present when upgrading to 1.2.0, then the mapping for this index can be corrupted once a document with a new field is indexed. 1.2.1 restores the correct behavior of include_in_all.

Conclusion

Users with Elasticsearch 1.2.0 should immediately upgrade to 1.2.1. We will be working to see what tools we can create to help users that have experienced problems from 1.2.0 and we will update on our progress soon. Please download 1.2.1 and let us know what you think. You can report any issues on our GitHub page.