19 July 2011 Engineering

0.17.0 Released

By Shay Banon

elasticsearch version 0.17.0 has just been released. You can download it here. This is a major release, and includes the following major features:

Improved Aliases – Filtering and Routing

Index aliases, which are very handy in aliasing a custom name to an index (or indices) and changing it on the fly, now support the ability to associate a search filter which will automatically filter all the search requests when using the alias, and a routing value (will automatically be used when hitting the alias).

This can come in handy in several scenarios, for example, a single index holding multi user data can have a username as the alias, associate a term filter that filters the results based on the username, and possibly use the username as the routing value (thus hitting less shards when searching).

Realtime GET

The get API is now fully realtime. This means that its not affected by the scheduled refresh / visibility of changes done to the index for search, and once a document is indexed / deleted, it will be immediately visible for GET.

Also, a new multi get API has been added to execute multi document get in an optimized manner.

Note, the realtime get feature does not require “refreshing” the Lucene index, and does not come with the overhead associated with it.

Nested objects / docs

Nested objects / documents are now supported, allowing for a document to be broken down into root document and nested document (mainly make sense for multi valued inner objects). This allows for better searchability across those nested documents, as well as better faceting.

The nested mapping allows to control which inner objects will be nested. Searching “within” nested docs is done using nested query and filter. Faceting is explained in the faceting section.

Note, the fact that those nested documents are “within” the json document indexed allows to index them within the same “block”, resulting in extremely fast “join” implementation (compared to parent child mapping).

Plugins & Site Plugins

The plugins module has been enhanced to support downloading plugins from github. Plugins can now also serve static sites, for example, installing two commonly used web admins for elasticsearch is as simple as:

bin/plugin -install mobz/elasticsearch-head
/plugin -install lukas-vlcek/bigdesk

Many Indices / Large Cluster

Numerous improvements to large clusters and many indices scenarios, especially around memory utilization and full cluster restart times.

Lucene 3.3

An upgrade to Lucene 3.3 version bringing bug fixes and a new tiered based segment merging.

Nodes APIs

All nodes level APIs now support executing the APIs against nodes not only based on their IDs. For example:

# Address
curl localhost
curl localhost
# Names
curl localhost
curl localhost
# Attributes (set something like node.rack: 2 in the config)
curl localhost
curl localhost
curl localhost

EC2 specific network host settings

Specific ec2 settings for host names when the cloud-aws plugin is installed. For example, setting network.host to _ec2:privateIp_ will automatically use the configured instance private ip address to bind and publish to.

Small(er) improvements and bug fixes

As usual, many more smaller features (more analyzers, more customization) and bug fixes are in this release.