<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>elasticsearch</title>
 <link href="http://elasticsearch.org/atom.xml" rel="self"/>
 <link href="http://elasticsearch.org/"/>
 <updated>2012-05-10T02:12:01-07:00</updated>
 <id>http://elasticsearch.org/</id>
 <author>
   <name>elasticsearch</name>
   <email>contact@elasticsearch.com</email>
 </author>

 
 <entry>
   <title>0.19.3 Released</title>
   <link href="http://elasticsearch.org/blog/2012/04/30/0.19.3-released.html"/>
   <updated>2012-04-30T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/blog/2012/04/30/0.19.3-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.3&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. The release includes an upgraded Lucene 3.6 version, and several bug fixes, including better handling of network splits with node client nodes and with minimum master nodes.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.3</title>
   <link href="http://elasticsearch.org/download/2012/04/30/0.19.3.html"/>
   <updated>2012-04-30T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/download/2012/04/30/0.19.3</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;New features:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrade to Lucene 3.6 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1862&quot;&gt;#1862&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrade to Netty 3.4.1 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1863&quot;&gt;#1863&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Better handling of fields that have &lt;code&gt;.&lt;/code&gt; in their name when doing property based navigation (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1875&quot;&gt;#1875&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Upgrade to Netty 3.4.1.Final (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1878&quot;&gt;#1878&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Bulk &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Allow to control if its compressed or not using &lt;code&gt;action.bulk.compress&lt;/code&gt; (defaults to true which is current behavior) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1850&quot;&gt;#1850&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Date Histogram Facet: Add &lt;code&gt;quarter&lt;/code&gt; as an interval  (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1884&quot;&gt;#1884&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Node Stats: Add timestamp per node stats element (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1851&quot;&gt;#1851&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Relocation of shards causes bulk indexing client to hang (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1839&quot;&gt;#1839&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Setting index.auto_expand_replicas in the elasticsearch config file does not apply (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1852&quot;&gt;#1852&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;XContentBuilder throws &lt;span class=&quot;caps&quot;&gt;NPE&lt;/span&gt; on null Boolean (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1853&quot;&gt;#1853&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;On recovery (startup), the recovery translog file handle is not properly closed (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1866&quot;&gt;#1866&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;NullPointerException in geo_distance_range without to (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1865&quot;&gt;#1865&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;JDK&lt;/span&gt; 7 requires minimum of 256k stack size, update scripts to set it (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1892&quot;&gt;#1892&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;When a node disconnects from the cluster (not enough master nodes, or a client node) and rejoins it might not update its internal routing table (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1896&quot;&gt;#1896&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Highlighting: Using &amp;#8220;plain&amp;#8221; (non term vector) highlighting with custom score within a filtered query fails to highlight (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1894&quot;&gt;#1894&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Translog: Buffering translog does not write directly to the file channel but to &lt;span class=&quot;caps&quot;&gt;RAF&lt;/span&gt;, which causes problems reading from the channel on windows (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1887&quot;&gt;#1887&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.2 Released</title>
   <link href="http://elasticsearch.org/blog/2012/04/04/0.19.2-released.html"/>
   <updated>2012-04-04T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/blog/2012/04/04/0.19.2-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.2&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It is a bug fix release fixing several bugs including a bug not being able to update index level settings on a live index using the index update settings &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.2</title>
   <link href="http://elasticsearch.org/download/2012/04/04/0.19.2.html"/>
   <updated>2012-04-04T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/download/2012/04/04/0.19.2</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Upgrade Notes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (&lt;code&gt;curl host:9200/_flush&lt;/code&gt;) before shutting down the cluster, with no indexing operations happening after the flush.&lt;/li&gt;
	&lt;li&gt;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&amp;#8217;t downgrade without using them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Have streams provided to gateway (shared one) allow marking (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1803&quot;&gt;#1803&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;add an index level setting to disable/enable purging of expired docs (is&amp;#8230; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1808&quot;&gt;#1808&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Add an index level setting to disable/enable purging of expired docs (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1791&quot;&gt;#1791&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Analysis: Custom analyzer to allow to configure position_offset_gap and offset_gap (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1812&quot;&gt;#1812&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Java &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;: Add wrapper filter similar to wrapper query accepting a json filter in raw format (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1844&quot;&gt;#1844&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Mapping: Allow to configure position_offset_gap for string mapping (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1813&quot;&gt;#1813&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;: &lt;code&gt;term&lt;/code&gt; filter to support the more &amp;#8220;complex&amp;#8221; form similar to &lt;code&gt;term&lt;/code&gt; query (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1830&quot;&gt;#1830&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Search/Get: Add preference option of &lt;code&gt;_primary_first&lt;/code&gt; trying to primary first and then replicas (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1824&quot;&gt;#1824&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Support for Latvian stemming: &lt;code&gt;latvian&lt;/code&gt; analyzer and &lt;code&gt;latvian&lt;/code&gt; language for stemmer filter (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1842&quot;&gt;#1842&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Index Update Settings &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; does not update settings in real time (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1807&quot;&gt;#1807&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Indexing a document in smile format and getting it through &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; in json format fails (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1816&quot;&gt;#1816&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;TransportClient hangs when in sniff mode and no node running  (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1818&quot;&gt;#1818&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;TransportClient (sniff) fails to reconnect to nodes once removed if all nodes are removed (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1819&quot;&gt;#1819&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Disabling deletion of all indices does not work when using _all (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1834&quot;&gt;#1834&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;requesting fields=&lt;em&gt;timestamp,&lt;/em&gt;source won&amp;#8217;t return _source (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1833&quot;&gt;#1833&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Getting _settings or _mapping for non-existing index returns 200 OK (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1828&quot;&gt;#1828&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Number of replicas setting can not be set on a closed index (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1845&quot;&gt;#1845&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Java &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Calling SearchHit#sourceAsString will not decompress the source to convert it to string (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1814&quot;&gt;#1814&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Node Stats: OS stats reporting free as the key instead of used (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1804&quot;&gt;#1804&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>Deploying ElasticSearch with Chef Solo</title>
   <link href="http://elasticsearch.org/tutorials/2012/03/21/deploying-elasticsearch-with-chef-solo.html"/>
   <updated>2012-03-21T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/tutorials/2012/03/21/deploying-elasticsearch-with-chef-solo</id>
   <author>
     <name>Karel Minarik</name>
   </author>
   <content type="html">&lt;style&gt;
  #content.tutorials a
    { color: black !important; border-bottom: 1px solid black; -webkit-border-radius: 0px; -moz-border-radius: 0px; border-radius: 0px; }
  #content.tutorials code
    { background-color: #C6E86A; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
  #content.tutorials img
    { border: 1px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; -moz-box-shadow: 5px 5px 20px #647F47; -webkit-box-shadow: 5px 5px 20px #647F47; box-shadow: 5px 5px 20px #647F47; }
  #content.tutorials small
    { font-size: 90%; color: #11130E; }
  #content.tutorials small code
    { font-size: 90%; color: #11130E; background-color: transparent; }
  #content.tutorials .infobox
    { font-size: 95%; color: #444; background-color: #F1ED81; padding: 1em 1.5em; margin-bottom: 1.5em; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; -moz-box-shadow: 5px 5px 20px #647F47; -webkit-box-shadow: 5px 5px 20px #647F47; box-shadow: 5px 5px 20px #647F47; }
  #content.tutorials .infobox code
    { background-color: transparent !important; }
  #content.tutorials .infobox pre
    { background-color: transparent !important; margin: 0; padding: 0px; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } 
&lt;/style&gt;&lt;p&gt;ElasticSearch is trivially easy to install and run: you just a download and extract an archive and run a simple script.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a long way from there to production, though. You have to customize the configuration. You want to install some plugins. You&amp;#8217;d like to ensure ElasticSearch starts on system boot. You want to monitor that the Java process is running and does not eat too much resources&amp;#8230; and many other things.&lt;/p&gt;

&lt;p&gt;And then you have to repeat all the steps for each and every node in your cluster.&lt;/p&gt;

&lt;p&gt;It would be cool if you could do this in an automated, mechanized manner, wouldn&amp;#8217;t it?&lt;/p&gt;

&lt;p&gt;As it happens, there&amp;#8217;s lots of both open source and commercial or vendor-specific infrastructure provisioning tools available, which make tasks like these a snap.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ll focus on &lt;a href='http://www.opscode.com/chef/'&gt;&lt;em&gt;Chef&lt;/em&gt;&lt;/a&gt;, an open-source framework for infrastructure provisioning and management, maintained and supported by &lt;a href='http://www.opscode.com'&gt;&lt;em&gt;Opscode&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id='what_is_chef'&gt;What Is Chef?&lt;/h2&gt;

&lt;p&gt;This article can&amp;#8217;t be a full introduction into &lt;em&gt;Chef&lt;/em&gt;. You&amp;#8217;ll find many learning materials on the &lt;a href='http://wiki.opscode.com/display/chef/Home'&gt;&lt;em&gt;Chef&lt;/em&gt; wiki&lt;/a&gt;, but for our purposes, we&amp;#8217;ll manage with some absolute minimum.&lt;/p&gt;

&lt;p&gt;The first important thing to understand is that there are actually two different “chefs”:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href='http://wiki.opscode.com/display/chef/Architecture+Introduction'&gt;&lt;em&gt;Chef Server&lt;/em&gt;&lt;/a&gt;, a central repository for all your infrastructure information and configuration data, which is used with the &lt;a href='http://wiki.opscode.com/display/chef/Chef+Client'&gt;&lt;code&gt;chef-client&lt;/code&gt;&lt;/a&gt; tool, and&lt;/li&gt;

&lt;li&gt;&lt;a href='http://wiki.opscode.com/display/chef/Chef+Solo'&gt;&lt;em&gt;Chef Solo&lt;/em&gt;&lt;/a&gt;, which uses a standalone &lt;code&gt;chef-solo&lt;/code&gt; tool, which does not need a &lt;em&gt;Chef&lt;/em&gt; server.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the context of this article, we&amp;#8217;ll be using &lt;em&gt;Chef Solo&lt;/em&gt;, which means we can&amp;#8217;t use certain advanced features, such as full text search of our server attributes, executing the same command over SSH on multiple servers at once, or using a web-based GUI, but we&amp;#8217;ll still be able to automate without breaking a sweat.&lt;/p&gt;

&lt;p&gt;The essential concepts of &lt;em&gt;Chef&lt;/em&gt; are the same between the “server” and “solo” variants.&lt;/p&gt;

&lt;p&gt;The first of these is a &lt;strong&gt;node&lt;/strong&gt;. A &lt;a href='http://wiki.opscode.com/display/chef/Nodes'&gt;&lt;em&gt;node&lt;/em&gt;&lt;/a&gt; is simply an abstract configuration for a &lt;em&gt;server&lt;/em&gt;, reachable by SSH. You can picture &lt;em&gt;node&lt;/em&gt; as a document containing some &lt;em&gt;attributes&lt;/em&gt;, such as a name, the port number for an Apache server or the list of software we want to have installed. A “physical representation” of the node is the virtual or physical server itself. (In &lt;em&gt;Chef Server&lt;/em&gt;, things are a bit more complicated, but that doesn&amp;#8217;t concern us right now.)&lt;/p&gt;

&lt;p&gt;Every &lt;em&gt;node&lt;/em&gt; can have one or multiple associated &lt;strong&gt;roles&lt;/strong&gt;. A &lt;a href='http://wiki.opscode.com/display/chef/Roles'&gt;&lt;em&gt;role&lt;/em&gt;&lt;/a&gt; joins together various configuration options for a certain type of machine: for instance, you can have a “webserver” role which would describe that you want to install an Apache webserver, a Varnish proxy, etc. A role contains recipes, or other roles. We won&amp;#8217;t be using roles in this tutorial, though.&lt;/p&gt;

&lt;p&gt;The most important concept is a &lt;strong&gt;cookbook&lt;/strong&gt;, containing various &lt;strong&gt;recipes&lt;/strong&gt; which describe, in detail, how we like our &lt;em&gt;node&lt;/em&gt; to be set up. A &lt;em&gt;recipe&lt;/em&gt; uses a variety of &lt;a href='http://wiki.opscode.com/display/chef/Resources'&gt;&lt;em&gt;resources&lt;/em&gt;&lt;/a&gt; to describe these details, such as setting some default node properties, creating directories, creating configuration files with specific content, installing packages, downloading files from the internet, or executing arbitrary scripts and commands. Cookbooks hold together recipes, template files, &lt;em&gt;Chef&lt;/em&gt; extensions, etc.&lt;/p&gt;

&lt;p&gt;Have a look at the &lt;a href='https://github.com/karmi/cookbook-elasticsearch'&gt;&lt;strong&gt;ElasticSearch cookbook&lt;/strong&gt;&lt;/a&gt; we&amp;#8217;ll be using in this tutorial, to get a sense of how cookbooks are organized and how do they work. The &lt;a href='https://github.com/karmi/cookbook-elasticsearch/blob/master/recipes/default.rb'&gt;recipe&lt;/a&gt; is written in a simple Ruby-based domain specific language, and should be pretty understandable. Check out also the &lt;a href='https://github.com/karmi/cookbook-elasticsearch/tree/master/templates/default'&gt;cookbook templates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A recipe can also load additional data from &lt;strong&gt;data bags&lt;/strong&gt;. &lt;a href='http://wiki.opscode.com/display/chef/Data+Bags'&gt;&lt;em&gt;Data bags&lt;/em&gt;&lt;/a&gt; are simple JSON documents, and can contain arbitrary information, such as user credentials, API tokens and other things not specific to a certain recipe. We won&amp;#8217;t be using data bags in this tutorial, because we will store all information directly within the node configuration.&lt;/p&gt;

&lt;h2 id='our_goals'&gt;Our goals&lt;/h2&gt;

&lt;p&gt;OK, now we&amp;#8217;re familiar with the essential parts of &lt;em&gt;Chef&lt;/em&gt;. What are our goals, then? How would we like to have our ElasticSearch server to be set up? In fact, we would like a number of things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First of all, install a specific version of ElasticSearch on the node&lt;/li&gt;

&lt;li&gt;Create a &lt;code&gt;elasticsearch.yml&lt;/code&gt; file with custom configuration&lt;/li&gt;

&lt;li&gt;Create a separate user to run ElasticSearch&lt;/li&gt;

&lt;li&gt;Register a service to start ElasticSearch automatically on server boot&lt;/li&gt;

&lt;li&gt;Increase the open files limit for the &lt;em&gt;elasticsearch&lt;/em&gt; user&lt;/li&gt;

&lt;li&gt;Configure the memory limits and other settings for the JVM&lt;/li&gt;

&lt;li&gt;Monitor the ElasticSearch process and cluster health with &lt;a href='http://mmonit.com/monit/'&gt;&lt;em&gt;Monit&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;Install the &lt;a href='http://nginx.org/'&gt;&lt;em&gt;Nginx&lt;/em&gt;&lt;/a&gt; web server and use it as a proxy for ElasticSearch&lt;/li&gt;

&lt;li&gt;Store user credentials for HTTP authentication with &lt;em&gt;Nginx&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And optionally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the &lt;a href='http://github.com/elasticsearch/elasticsearch-cloud-aws'&gt;&lt;em&gt;AWS Cloud&lt;/em&gt;&lt;/a&gt; plugin&lt;/li&gt;

&lt;li&gt;Configure the &lt;em&gt;AWS Cloud&lt;/em&gt; plugin with proper credentials to use the &lt;a href='http://www.elasticsearch.org/guide/reference/modules/discovery/ec2.html'&gt;EC2 discovery&lt;/a&gt; and the &lt;a href='http://www.elasticsearch.org/guide/reference/modules/gateway/s3.html'&gt;S3 gateway&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, not a short list of tasks. If we would be doing them manually, we could easily spend whole afternoon with that. By using &lt;em&gt;Chef&lt;/em&gt;, we should be done in under five minutes, once we get hold of it.&lt;/p&gt;

&lt;p&gt;One important thing to emphasize is that we will use the &lt;a href='http://aws.amazon.com/ec2/'&gt;&lt;em&gt;Amazon EC2&lt;/em&gt;&lt;/a&gt; service to create virtual servers to deploy ElasticSearch nodes at, and we will use some features in ElasticSearch specific to &lt;em&gt;Amazon Web Services&lt;/em&gt; (AWS).&lt;/p&gt;

&lt;p&gt;You&amp;#8217;re not limited to the EC2 platform in any way, though: any virtual or physical server accessible by SSH will be absolutely perfect for the purposes of this tutorial — you&amp;#8217;ll just need to configure the node a little bit differently.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;
Note: for making yourself familiar with running ElasticSearch on EC2, you should read the excellent tutorial by James Cook,
&lt;a href='/tutorials/2011/08/22/elasticsearch-on-ec2.html'&gt;“ElasticSearch on EC2”&lt;/a&gt;, which explains many important topics
related to sucessfully running ElasticSearch in the AWS ecosystem. You don't have to read it for the purposes of this
tutorial, though.&lt;/small&gt;&lt;/p&gt;
&lt;h2 id='preparation'&gt;Preparation&lt;/h2&gt;

&lt;p&gt;Before we really start cooking, we must prepare all the tools and ingredients. Assuming EC2, we need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;download and edit the scripts and configuration files used in this tutorial,&lt;/li&gt;

&lt;li&gt;create a dedicated security group in AWS,&lt;/li&gt;

&lt;li&gt;launch an instance which we&amp;#8217;ll be provisioning via &lt;em&gt;Chef&lt;/em&gt;,&lt;/li&gt;

&lt;li&gt;download the SSH key used for accessing the instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We&amp;#8217;ll begin by downloading the files need for this tutorial from the following gist: &lt;a href='http://gist.github.com/2050769'&gt;http://gist.github.com/2050769&lt;/a&gt;. We might as well do it with one command:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
curl -# -L -k https://gist.github.com/gists/2050769/download | tar xz --strip 1 -C .
&lt;/pre&gt;
&lt;p&gt;Your current directory should now contain 4 files (and a readme). Let&amp;#8217;s review them briefly:&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;bootstrap.sh&lt;/code&gt; file is a generic Bash script, which we&amp;#8217;ll use for basic setup of the machine (installing &lt;em&gt;make&lt;/em&gt;, &lt;em&gt;Rubygems&lt;/em&gt;, etc.). The &lt;code&gt;patches.sh&lt;/code&gt; script is used to fix some problems in community cookbooks (and will hopefully be removed from this tutorial soon). You don&amp;#8217;t have to edit these files.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;node-example.js&lt;/code&gt; file contains an example configuration for the whole “node”: list of &lt;em&gt;cookbooks&lt;/em&gt; we want to install, AWS credentials, username and password for the &lt;em&gt;Nginx&lt;/em&gt; HTTP authentication, your e-mail address for &lt;em&gt;Monit&lt;/em&gt; notifications. We&amp;#8217;ll start with a much smaller configuration, though.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;solo.rb&lt;/code&gt; file contains configuration for &lt;em&gt;Chef Solo&lt;/em&gt;. Again, you don&amp;#8217;t have to touch it.&lt;/p&gt;
&lt;div class='infobox'&gt;
  &lt;h3&gt;Information for non-AWS environments&lt;/h3&gt;
  &lt;p&gt;
    From now on, we will assume that we're working with Amazon Elastic Cloud (EC2), provisioning an Amazon Linux operating system.
    If you'd like to work in a different environment (a VPS on &lt;em&gt;Rackspace&lt;/em&gt; or &lt;em&gt;Linode&lt;/em&gt;,
    local virtual machine in &lt;em&gt;VirtualBox&lt;/em&gt; or custom hardware), and with a different operating system,
    you'll have to tweak couple of things.
  &lt;/p&gt;
  &lt;p&gt;
    First, you'll have to make sure you can access the server via SSH and update the &lt;code&gt;SSH_OPTIONS&lt;/code&gt;
    environment variable according to your specific credentials.
  &lt;/p&gt;
  &lt;p&gt;
    Second, in the tutorial, we assume the server already has a working Ruby and Java installation.
    When it's not the case, they must be installed as part of the bootstrap process.
  &lt;/p&gt;
  &lt;p&gt;
    A bootstrap script and instructions for the &lt;em&gt;Ubuntu&lt;/em&gt; operating system are available
    in this &lt;a href='https://gist.github.com/2060496'&gt;gist&lt;/a&gt;.
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;On Amazon EC2, we&amp;#8217;ll start by creating a dedicated &lt;a href='https://console.aws.amazon.com/ec2/home?region=us-east-1#s=SecurityGroups'&gt;security group&lt;/a&gt; for our ElasticSearch cluster in the AWS console. We will name the group &lt;code&gt;elasticsearch-test&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Make sure the security group allows connections on following ports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Port 22 for SSH is open for external access (the default &lt;code&gt;0.0.0.0/0&lt;/code&gt;)&lt;/li&gt;

&lt;li&gt;Port 8080 for the &lt;em&gt;Nginx&lt;/em&gt; proxy is open for external access (the default &lt;code&gt;0.0.0.0/0&lt;/code&gt;)&lt;/li&gt;

&lt;li&gt;Port 9300 for in-cluster communication is open for access only to servers running in the same security group (use the “Group ID” for this group, available on the &amp;#8220;Details&amp;#8221; tab, such as &lt;code&gt;sg-1a23bcd&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The form for setting up the security group is pictured below.&lt;/p&gt;

&lt;p&gt;&lt;img src='/tutorials/images/chef-solo/create-security-group.png' alt='Create Security Group' /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Don&amp;#8217;t forget to click “Apply Rule Changes” so the changes are, in fact, applied.&lt;/p&gt;

&lt;p&gt;Now, we&amp;#8217;ll launch a new &lt;a href='https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances'&gt;server instance&lt;/a&gt; at EC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a meaningful name for the instance. We will use &lt;code&gt;test-elasticsearch-chef-1&lt;/code&gt;.&lt;/li&gt;

&lt;li&gt;Create a new &amp;#8220;Key Pair&amp;#8221; for the instance, and download it immediately. We will be using a key named &lt;code&gt;elasticsearch-test&lt;/code&gt;.&lt;/li&gt;

&lt;li&gt;Use the &lt;em&gt;Amazon Linux AMI&lt;/em&gt; (&lt;a href='https://aws.amazon.com/amis/amazon-linux-ami-ebs-backed-64-bit'&gt;&lt;code&gt;ami-1b814f72&lt;/code&gt;&lt;/a&gt;). Amazon Linux comes with Ruby and Java pre-installed.&lt;/li&gt;

&lt;li&gt;Use the &lt;code&gt;m1.large&lt;/code&gt; instance type. You may use the &lt;em&gt;small&lt;/em&gt; or even the &lt;em&gt;micro&lt;/em&gt; instance type, but the process would take much longer).&lt;/li&gt;

&lt;li&gt;Use the security group created in the first step (&lt;code&gt;elasticsearch-test&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;em&gt;quicklaunch&lt;/em&gt; screen for creating the instance is pictured below:&lt;/p&gt;

&lt;p&gt;&lt;img src='/tutorials/images/chef-solo/create-server-instance.png' alt='Create Server Instance' /&gt;&lt;/p&gt;

&lt;p&gt;Dont&amp;#8217; forget to download the newly created SSH key!&lt;/p&gt;

&lt;p&gt;Don&amp;#8217;t forget to click the “Edit Details” link on the next screen and set the proper instance type (“m1.large”) in the “Instance Details” pane, and the proper security group (“elasticsearch-test”) in the “Security Settings” pane.&lt;/p&gt;

&lt;p&gt;&lt;img src='/tutorials/images/chef-solo/check-instance-details.png' alt='Check Instance Details' /&gt;&lt;/p&gt;

&lt;p&gt;Now you can click “Launch” to create and start your server.&lt;/p&gt;

&lt;p&gt;While the server is being created in EC2, we will copy the SSH key downloaded from AWS console to the &lt;code&gt;tmp/&lt;/code&gt; directory of this project and make sure it has proper permissions:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
mkdir -p ./tmp
cp ~/Downloads/elasticsearch-test.pem ./tmp/
chmod 600 ./tmp/elasticsearch-test.pem
&lt;/pre&gt;
&lt;p&gt;Once our server is in the &lt;em&gt;running&lt;/em&gt; state, copy its “Public DNS” value in the AWS console (eg. &lt;code&gt;ec2-123-40-123-50.compute-1.amazonaws.com&lt;/code&gt;) to clipboard.&lt;/p&gt;

&lt;h2 id='bootstrapping_the_machine'&gt;Bootstrapping the Machine&lt;/h2&gt;

&lt;p&gt;We can begin the bootstrap and install process now.&lt;/p&gt;

&lt;p&gt;First, we&amp;#8217;ll setup the connection details for convenient passing into &lt;em&gt;scp&lt;/em&gt; and &lt;em&gt;ssh&lt;/em&gt; commands:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
HOST=&amp;lt;REPLACE WITH YOUR PUBLIC DNS&amp;gt;
SSH_OPTIONS=&quot;-o User=ec2-user -o IdentityFile=./tmp/elasticsearch-test.pem -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null&quot;
&lt;/pre&gt;
&lt;p&gt;We&amp;#8217;ll check that we can connect to the machine via secure shell:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh $SSH_OPTIONS $HOST
&lt;/pre&gt;
&lt;p&gt;You should be successfully logged into the machine. (Log out by pressing &lt;code&gt;Ctrl+D&lt;/code&gt;.)&lt;/p&gt;

&lt;p&gt;If you have trouble in this step, double-check that the security group is properly set up, that you&amp;#8217;re using the correct SSH key, etc.&lt;/p&gt;

&lt;p&gt;We will now create a simple configuration JSON file for the machine:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
echo '
{
  &quot;run_list&quot;: [ &quot;recipe[elasticsearch]&quot; ],
  &quot;elasticsearch&quot; : {
    &quot;cluster_name&quot; : &quot;elasticsearch_test_with_chef&quot;
  }
}
' &gt; ./node.json
&lt;/pre&gt;
&lt;p&gt;As you can see, we&amp;#8217;re starting with a really simplified configuration: in the &lt;code&gt;run_list&lt;/code&gt; property, we&amp;#8217;re saying we want the ElasticSearch cookbook installed and that our cluster will be named &lt;code&gt;elasticsearch_test_with_chef&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s copy all these files to the machine via secure copy:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
scp $SSH_OPTIONS ./bootstrap.sh ./patches.sh ./node.json ./solo.rb $HOST:/tmp
&lt;/pre&gt;
&lt;p&gt;We can now begin to bootstrap the machine: install neccessary packages such as &lt;em&gt;make&lt;/em&gt;, install &lt;em&gt;Rubygems&lt;/em&gt; and the &lt;code&gt;chef&lt;/code&gt; gem, download cookbooks from the internet, etc.:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo bash /tmp/bootstrap.sh&quot;
&lt;/pre&gt;
&lt;p&gt;You&amp;#8217;ll see lots of lines flying by in your terminal. We&amp;#8217;re running the &lt;a href='https://gist.github.com/2050769#file_bootstrap.sh'&gt;bootstrap script&lt;/a&gt; remotely over SSH; it should take about 2 minutes.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re left with running the &lt;code&gt;patches.sh&lt;/code&gt; script, which will fix some problems from the community cookbooks (create neccessary directories or users, etc.):&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo bash /tmp/patches.sh&quot;
&lt;/pre&gt;
&lt;h2 id='installing_and_configuring_elasticsearch'&gt;Installing and Configuring ElasticSearch&lt;/h2&gt;

&lt;p&gt;OK – our server is now ready to be provisioned by &lt;em&gt;Chef Solo&lt;/em&gt;. We will launch the following command:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo chef-solo --node-name elasticsearch-test-1 -j /tmp/node.json&quot;
&lt;/pre&gt;
&lt;p&gt;This command will perform all the steps neccessary for a bare bones ElasticSearch installation; it will create the directories at &lt;code&gt;/usr/local/var/data/elasticsearch&lt;/code&gt;, create the &lt;em&gt;elasticsearch&lt;/em&gt; user, download the ElasticSearch package from &lt;em&gt;GitHub&lt;/em&gt; and run it.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s have a look around on the server. Is ElasticSearch, in fact, running?&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;curl localhost:9200&quot;
&lt;/pre&gt;
&lt;p&gt;We can also use the provided service script to check its status:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;sudo service elasticsearch status -v&quot;
&lt;/pre&gt;
&lt;p&gt;You can see that our cluster is named &lt;em&gt;elasticsearch_test_with_chef&lt;/em&gt;, and that our node is named &lt;em&gt;elasticsearch-test-1&lt;/em&gt;, and that the number of open files is &lt;em&gt;64000&lt;/em&gt;. In fact, let&amp;#8217;s have a look at the &lt;code&gt;elasticsearch.yml&lt;/code&gt; configuration file:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;cat /usr/local/etc/elasticsearch/elasticsearch.yml&quot;
&lt;/pre&gt;
&lt;p&gt;That&amp;#8217;s all well and good – we have automated the ElasticSearch installation process, downloading the package, extracting it, registering it as a service, and properly configuring it.&lt;/p&gt;

&lt;p&gt;But our goals are much more ambitious then that! We want monitoring, and the &lt;em&gt;Nginx&lt;/em&gt; proxy, and proper AWS setup with EC2 discovery, and S3 persistence!&lt;/p&gt;

&lt;p&gt;Seems like the right time to edit the &lt;code&gt;node.js&lt;/code&gt; file has come.&lt;/p&gt;

&lt;h2 id='the_full_installation'&gt;The Full Installation&lt;/h2&gt;

&lt;p&gt;Let&amp;#8217;s start with overwriting our current &lt;code&gt;node.js&lt;/code&gt; with the provided example:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
cp node-example.json node.json
&lt;/pre&gt;
&lt;p&gt;We have to edit the file and replace the following properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;elasticsearch.gateway.s3.bucket&lt;/code&gt; with a unique name for your bucket&lt;/li&gt;

&lt;li&gt;&lt;code&gt;elasticsearch.cloud.aws.access_key&lt;/code&gt; with your AWS Access Key&lt;/li&gt;

&lt;li&gt;&lt;code&gt;elasticsearch.cloud.aws.secret_key&lt;/code&gt; with your AWS Secret Key&lt;/li&gt;

&lt;li&gt;&lt;code&gt;monit.notify_email&lt;/code&gt; with your e-mail address&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You&amp;#8217;ll find the access and security keys on the &lt;a href='https://aws-portal.amazon.com/gp/aws/securityCredentials'&gt;“Security Credentials”&lt;/a&gt; page, accessible from the drop-down menu under your name in the top right corner.&lt;/p&gt;

&lt;p&gt;All right, let&amp;#8217;s upload the updated file to the machine:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
scp $SSH_OPTIONS ./bootstrap.sh ./patches.sh ./node.json ./solo.rb $HOST:/tmp
&lt;/pre&gt;
&lt;p&gt;And let&amp;#8217;s run the provisioning script again:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo chef-solo --node-name elasticsearch-test-1 -j /tmp/node.json&quot;
&lt;/pre&gt;
&lt;p&gt;You should see, once again, many lines in your terminal flying by, installing &lt;em&gt;Monit&lt;/em&gt; and &lt;em&gt;Nginx&lt;/em&gt;, downloading the &lt;a href='https://github.com/elasticsearch/elasticsearch-cloud-aws'&gt;“AWS Cloud plugin”&lt;/a&gt; for ElasticSearch, configuring the &lt;em&gt;Nginx&lt;/em&gt; proxy, and finally, restarting ElasticSearch itself.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s try the new configuration by accessing the &lt;em&gt;Nginx&lt;/em&gt; proxy running on port 8080:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
curl http://USERNAME:PASSWORD@$HOST:8080
&lt;/pre&gt;
&lt;p&gt;Pretty nice, right? Notice how trying to access the “Cluster API” is &lt;code&gt;403 Forbidden&lt;/code&gt;:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
curl http://USERNAME:PASSWORD@$HOST:8080/_cluster/health
&lt;/pre&gt;
&lt;p&gt;Nevertheless, we can index some documents over the &lt;em&gt;Nginx&lt;/em&gt; proxy just fine:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
curl -X POST &quot;http://USERNAME:PASSWORD@$HOST:8080/test_chef_cookbook/document/1&quot; -d '{&quot;title&quot; : &quot;Test 1&quot;}'
curl -X POST &quot;http://USERNAME:PASSWORD@$HOST:8080/test_chef_cookbook/document/2&quot; -d '{&quot;title&quot; : &quot;Test 2&quot;}'
curl -X POST &quot;http://USERNAME:PASSWORD@$HOST:8080/test_chef_cookbook/document/3&quot; -d '{&quot;title&quot; : &quot;Test 3&quot;}'
curl -X POST &quot;http://USERNAME:PASSWORD@$HOST:8080/test_chef_cookbook/_refresh&quot;
&lt;/pre&gt;
&lt;p&gt;Let&amp;#8217;s try to perform a search:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
curl &quot;http://USERNAME:PASSWORD@$HOST:8080/_search?pretty&amp;amp;q=*&quot;
&lt;/pre&gt;
&lt;p&gt;Perfect. We can also check that ElasticSearch is running smoothly via &lt;em&gt;Monit&lt;/em&gt;:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;sudo monit reload &amp;amp;&amp;amp; sudo monit status -v&quot;
&lt;/pre&gt;
&lt;p&gt;You can see that the ElasticSearch process is &lt;code&gt;running&lt;/code&gt; and that the connection to port 9200 is &lt;code&gt;online with all services&lt;/code&gt;. But what about the &lt;em&gt;elasticsearch_cluster_health&lt;/em&gt; check? It says &lt;code&gt;Connection failed&lt;/code&gt;. In fact, that&amp;#8217;s expected:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;curl localhost:9200/_cluster/health?pretty&quot;
&lt;/pre&gt;
&lt;p&gt;Since we&amp;#8217;re running with the default setting of one replica with only one ElasticSearch node, the cluster health is &lt;em&gt;yellow&lt;/em&gt;: there&amp;#8217;s no other server where the cluster can place the replica on.&lt;/p&gt;

&lt;p&gt;Time to create another node in our cluster!&lt;/p&gt;

&lt;h2 id='adding_another_node'&gt;Adding Another Node&lt;/h2&gt;

&lt;p&gt;We&amp;#8217;ll launch another node on EC2, using the “Launch More Like This” feature, available under the “Instance Actions” menu:&lt;/p&gt;

&lt;p&gt;&lt;img src='/tutorials/images/chef-solo/launch-more-like-this.png' alt='Launch More Like This' /&gt;&lt;/p&gt;

&lt;p&gt;Name the second node &lt;code&gt;test-elasticsearch-chef-2&lt;/code&gt; and make sure that it runs under the &lt;code&gt;elasticsearch-test&lt;/code&gt; security group.&lt;/p&gt;

&lt;p&gt;Once the new instance is running, copy its “Public DNS” value. We will again store this value as the &lt;code&gt;HOST&lt;/code&gt; environment variable:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
HOST=&amp;lt;REPLACE WITH THE PUBLIC DNS FOR THE NEW SERVER&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now, let&amp;#8217;s run all the provisioning steps on the machine, making it the &lt;code&gt;elasticsearch-test-2&lt;/code&gt; node:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
scp $SSH_OPTIONS ./bootstrap.sh ./patches.sh ./node.json ./solo.rb $HOST:/tmp
time ssh -t $SSH_OPTIONS $HOST &quot;sudo bash /tmp/bootstrap.sh&quot;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo bash /tmp/patches.sh&quot;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo chef-solo --node-name elasticsearch-test-2 -j /tmp/node.json&quot;
&lt;/pre&gt;
&lt;p&gt;The whole process should be finished under five minutes, no less. Not bad, not at all.&lt;/p&gt;

&lt;p&gt;Allow ElasticSearch couple of seconds to boot and check the cluster health again:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;curl localhost:9200/_cluster/health?pretty&quot;
&lt;/pre&gt;
&lt;p&gt;You may see the number of &lt;code&gt;relocating_shards&lt;/code&gt; briefly increase, and then the cluster health should be &lt;strong&gt;green&lt;/strong&gt;, and the &lt;code&gt;number_of_nodes&lt;/code&gt; should be &lt;strong&gt;2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not bad! We now have a fully operational, two-node ElasticSearch cluster, with convenient &lt;code&gt;service&lt;/code&gt; scripts, an &lt;em&gt;Nginx&lt;/em&gt; proxy for external access, and &lt;em&gt;Monit&lt;/em&gt;-based supervision.&lt;/p&gt;

&lt;h2 id='going_further'&gt;Going Further&lt;/h2&gt;

&lt;p&gt;Time to play some tricks with out setup. The first thing we&amp;#8217;re going to try is to kill the ElasticSearch process on one of the nodes and see how it&amp;#8217;s being started again by &lt;em&gt;Monit&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;First, let&amp;#8217;s kill the process:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;cat '/usr/local/var/run/elasticsearch/elasticsearch_test_2.pid' | xargs -0 sudo kill -9&quot;
&lt;/pre&gt;
&lt;p&gt;If we check the ElasticSearch service status, it should not be running:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;sudo service elasticsearch status&quot;
&lt;/pre&gt;
&lt;p&gt;If we check the status in &lt;em&gt;Monit&lt;/em&gt; after a while, when the next &lt;em&gt;Monit&lt;/em&gt; tick fires off, it should also report the process not running and complain about all sorts of other problems:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;sudo monit status&quot;
&lt;/pre&gt;
&lt;p&gt;If you configured the e-mail adress for &lt;em&gt;Monit&lt;/em&gt; properly, you&amp;#8217;ll also receive a e-mail notification telling you about the incident (most probably in your &lt;em&gt;Spam&lt;/em&gt; folder). (Provided you&amp;#8217;ve not yet hit limits EC2 imposes on sending e-mail from instances.)&lt;/p&gt;

&lt;p&gt;If we now repeatedly check the process status, it will go trough “Does Not Exist” and “Execution Failed” states, and after two or three minutes (based on the default &lt;em&gt;Monit&lt;/em&gt; poll period), you should see the process in the &lt;em&gt;running&lt;/em&gt; state again:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;sudo monit reload &amp;amp;&amp;amp; sudo monit status&quot;
&lt;/pre&gt;
&lt;p&gt;So, our monitoring system seems to work quite well!&lt;/p&gt;

&lt;p&gt;On EC2, we can try another trick to check out whether the S3 persistence is working.&lt;/p&gt;

&lt;p&gt;Terminate both instances in the AWS console and create a new, fresh instance again.&lt;/p&gt;

&lt;p&gt;Copy the “Public DNS” setting of the new server, and repeat the whole provisioning process, which should be now quite transparent to you:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
HOST=&amp;lt;REPLACE WITH THE PUBLIC DNS VALUE&amp;gt;
scp $SSH_OPTIONS ./bootstrap.sh ./patches.sh ./node.json ./solo.rb $HOST:/tmp
time ssh -t $SSH_OPTIONS $HOST &quot;sudo bash /tmp/bootstrap.sh&quot;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo bash /tmp/patches.sh&quot;
time ssh -t $SSH_OPTIONS $HOST &quot;sudo chef-solo --node-name elasticsearch-test-1 -j /tmp/node.json&quot;
&lt;/pre&gt;
&lt;p&gt;Allow couple of seconds for ElasticSearch to boot and load the data, and perform the search on the freshly provisioned server:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
curl &quot;http://USERNAME:PASSWORD@$HOST:8080/_search?pretty&amp;amp;q=*&quot;
&lt;/pre&gt;
&lt;p&gt;You should now see the three documents, which we inserted long ago, on the now destroyed servers, displayed in your terminal: since we have configured our node to persist data into a S3 bucket, ElasticSearch happily loaded all the data from there.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;
Note: Again, to fully understand the different ElasticSearch persistence and discovery strategies and options at AWS,
please read the &lt;a href='/tutorials/2011/08/22/elasticsearch-on-ec2.html'&gt;“ElasticSearch on EC2”&lt;/a&gt; tutorial.
&lt;/small&gt;&lt;/p&gt;
&lt;h2 id='conclusions'&gt;Conclusions&lt;/h2&gt;

&lt;p&gt;Congratulations! By following this tutorial, you were able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Establish a repeatable and reliable process for setting up an ElasticSearch server&lt;/li&gt;

&lt;li&gt;Bootstrap, install and configure production-ready ElasticSearch cluster without manual intervention&lt;/li&gt;

&lt;li&gt;Summarize the whole server configuration in the &lt;code&gt;node.json&lt;/code&gt; file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first thing to take from this exercise is, of course, that &lt;strong&gt;automation beats manual labor every single time&lt;/strong&gt;, and by a long shot. When you&amp;#8217;re provisioning a ElasticSearch server for the third time, it&amp;#8217;s so painless you don&amp;#8217;t even notice it.&lt;/p&gt;

&lt;p&gt;When working with a provisioning tool such as &lt;em&gt;Chef&lt;/em&gt;, resist the urge to tinker with the system manually, editing configuration files in &lt;code&gt;vim&lt;/code&gt; and installing software manually — except in clearly determined cases when you&amp;#8217;re trying something out.&lt;/p&gt;

&lt;p&gt;It is of course &lt;em&gt;faster&lt;/em&gt; to make a small change directly on the system itself, instead of performing all the provisioning steps. But the whole point of &lt;em&gt;Chef&lt;/em&gt; is to make your system predictable, to summarize everything what&amp;#8217;s needed for its operation in one place, and to eradicate manual intervention.&lt;/p&gt;

&lt;p&gt;Notice how we added lots of configuration details in the “The Full Installation” chapter, uploaded the updated &lt;code&gt;node.json&lt;/code&gt; file to the system, and then just &lt;em&gt;ran the same command&lt;/em&gt; as previously. &lt;em&gt;Chef&lt;/em&gt; discovered it needs to update the &lt;code&gt;elasticsearch.yml&lt;/code&gt; file, did so, and restarted the ElasticSearch process to pick up the new configuration.&lt;/p&gt;

&lt;p&gt;The same applies for changes in the cookbook: when the ElasticSearch cookbook is updated at &lt;em&gt;GitHub&lt;/em&gt;, the &lt;code&gt;bootstrap&lt;/code&gt; script will fetch the changes, and the next &lt;code&gt;chef-solo&lt;/code&gt; run will reflect them on the system.&lt;/p&gt;

&lt;p&gt;The second thing to notice is &lt;strong&gt;how powerful is a tool like &lt;em&gt;Chef&lt;/em&gt;&lt;/strong&gt;. We didn&amp;#8217;t paid too much attention to &lt;em&gt;Chef&lt;/em&gt; specifics, but let&amp;#8217;s have a look at a small illustration. You should notice the memory settings for the JVM in the &lt;code&gt;elasticsearch-env.sh&lt;/code&gt; file:&lt;/p&gt;
&lt;pre class='prettyprint lang-bash'&gt;
ssh -t $SSH_OPTIONS $HOST &quot;cat /usr/local/etc/elasticsearch/elasticsearch-env.sh&quot;
&lt;/pre&gt;
&lt;p&gt;Where does the value &lt;code&gt;Xmx4982m&lt;/code&gt;, or nearly 5 GB, come from? How does &lt;em&gt;Chef&lt;/em&gt; know this value? Well, &lt;a href='https://github.com/karmi/cookbook-elasticsearch/blob/f5d7025/attributes/default.rb#L18-25'&gt;this Ruby code in the ElasticSearch cookbook&lt;/a&gt; did the computation, based on the total available memory on the EC2 large instance type (7.5 GB):&lt;/p&gt;
&lt;pre class='prettyprint lang-ruby'&gt;
max_mem = &quot;#{(node.memory.total.to_i - (node.memory.total.to_i/3) ) / 1024}m&quot;
default.elasticsearch[:max_mem] = max_mem
&lt;/pre&gt;
&lt;p&gt;Thanks to the &lt;em&gt;Ohai&lt;/em&gt; tool, &lt;em&gt;Chef&lt;/em&gt; knows many of these &lt;a href='http://wiki.opscode.com/display/chef/Automatic+Attributes'&gt;“automatic attributes”&lt;/a&gt; of the node, and can take them into consideration when provisioning the server. The ElasticSearch cookbook we have worked with makes use of these attribues in other places, for example when setting the &lt;code&gt;node.name&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The final conclusion of this experiment is &lt;strong&gt;how open the whole &lt;em&gt;Chef&lt;/em&gt; ecosystem is&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We didn&amp;#8217;t have to use the hosted &lt;em&gt;Chef Server&lt;/em&gt; product to use the other parts of its architecture. The concepts and principles are the same between &lt;em&gt;Chef Solo&lt;/em&gt; and &lt;em&gt;Chef Server&lt;/em&gt;, and allow you to reuse the most important part: the cookbooks.&lt;/p&gt;

&lt;p&gt;Most of the cookbooks are available on the &lt;a href='http://community.opscode.com/cookbooks'&gt;&lt;em&gt;Opscode&lt;/em&gt; community page&lt;/a&gt; under permissive licenses. For a complex infrastructure, you&amp;#8217;re most likely to adapt cookbooks to your needs, adjusting their recipes or templates. As we have seen, it&amp;#8217;s trivial to mix “vendor” cookbooks with our own cookbooks: we have downloaded the “stock” &lt;em&gt;Monit&lt;/em&gt; and &lt;em&gt;Nginx&lt;/em&gt; cookbooks from the internet to the &lt;code&gt;/var/chef-solo/site-cookbooks/&lt;/code&gt; directory, while cloning a custom ElasticSearch cookbook to the &lt;code&gt;/var/chef-solo/cookbooks&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;Chef&lt;/em&gt; domain specific language uses Ruby, a popular and expressive programming language, which makes adjusting and customizing cookbooks very easy. We can &lt;a href='https://github.com/opscode-cookbooks/'&gt;fork most cookbooks&lt;/a&gt; at &lt;em&gt;Github&lt;/em&gt; and participate in the growing common knowledge of efficient infrastructure provisioning.&lt;/p&gt;

&lt;p&gt;Enjoy your cooking!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.1 Released</title>
   <link href="http://elasticsearch.org/blog/2012/03/20/0.19.1-released.html"/>
   <updated>2012-03-20T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/blog/2012/03/20/0.19.1-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.1&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It is a bug fix release fixing several bugs including a major bug where a thread can get into &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; spin when its relocated and a search/stats operation is executed against it.&lt;/p&gt;
&lt;p&gt;The release also includes an update to the `read_only` option on an index. The option caused both write and metadata operations to be disabled for the relevant index. Now, in 0.19.1, specific read, write and metadata blocks can be set. See more &lt;a href=&quot;https://github.com/elasticsearch/elasticsearch/issues/1771&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.1</title>
   <link href="http://elasticsearch.org/download/2012/03/20/0.19.1.html"/>
   <updated>2012-03-20T00:00:00-07:00</updated>
   <id>http://elasticsearch.com/download/2012/03/20/0.19.1</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Upgrade Notes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (&lt;code&gt;curl host:9200/_flush&lt;/code&gt;) before shutting down the cluster, with no indexing operations happening after the flush.&lt;/li&gt;
	&lt;li&gt;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&amp;#8217;t downgrade without using them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New features:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Index Blocks: Add index.blocks.write, index.blocks.read, and index.blocks.metadata settings (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1771&quot;&gt;#1771&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Add &lt;code&gt;cache&lt;/code&gt; thread pool to handle cache loading of async caches (bloom filter)  (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1777&quot;&gt;#1777&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Java &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; for require_field_match  (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1795&quot;&gt;#1795&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Highlighting using the default highlighter (not using term vectors) only highlights on the first 50*1024 chars (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1796&quot;&gt;#1796&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Get: Add a specific &lt;code&gt;get&lt;/code&gt; thread pool that handles get request (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1778&quot;&gt;#1778&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;: indices filter type (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1787&quot;&gt;#1787&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Scripting: Allow to disable dynamic script execution (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1763&quot;&gt;#1763&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Special host config notation &lt;code&gt;_[interfaceName]_&lt;/code&gt; might fail to resolve the host address (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1754&quot;&gt;#1754&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;RemoteTransportException on _analyze request to specific index (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1770&quot;&gt;#1770&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Closing a shard can cause a search/stats request that tries to acquire a handle to search while its closing to spin (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1772&quot;&gt;#1772&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;IOException when restricting fields and returning nested arrays. (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1774&quot;&gt;#1774&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;mlt_field doesn&amp;#8217;t support boost (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1773&quot;&gt;#1773&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;When &lt;code&gt;node.data&lt;/code&gt; is set to &lt;code&gt;false&lt;/code&gt;, the upgrade shards process from 0.18 fails (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1793&quot;&gt;#1793&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Get/MultiGet &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; with no type provided and doc does not exists causes a failure (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1794&quot;&gt;#1794&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0 Released</title>
   <link href="http://elasticsearch.org/blog/2012/03/01/0.19.0-released.html"/>
   <updated>2012-03-01T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2012/03/01/0.19.0-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.0&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It is the final 0.19.0 release (after 3 release candidates). 0.19 major features have been outlined in the previous blog posts for each release candidate release, but, it also marks an important bug fix and stability release over 0.18, upgrade is highly encouraged to all elasticsearch users.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0</title>
   <link href="http://elasticsearch.org/download/2012/03/01/0.19.0.html"/>
   <updated>2012-03-01T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/download/2012/03/01/0.19.0</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Upgrade Notes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (&lt;code&gt;curl host:9200/_flush&lt;/code&gt;) before shutting down the cluster, with no indexing operations happening after the flush.&lt;/li&gt;
	&lt;li&gt;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&amp;#8217;t downgrade without using them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;msearch should accept a leading \n (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1736&quot;&gt;#1736&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Date Histogram Facet: Add &lt;code&gt;pre_zone_adjust_large_interval&lt;/code&gt; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1744&quot;&gt;#1744&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Flush: Add a specific thread pool for flush operations (scheduled and &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1734&quot;&gt;#1734&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Translog Flush: When disabling flush and enabling it again, scheduled flush stops executing (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1727&quot;&gt;#1727&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Real time get on a stored _size field does not return its value (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1724&quot;&gt;#1724&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;query never returns (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1725&quot;&gt;#1725&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Orderly shutdown with unicast discovery might cause the shutdown node to still be part of the election process (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1740&quot;&gt;#1740&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;NullPointerException when asking for null valued json field when fetching search request (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1749&quot;&gt;#1749&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Multi level parent/child mapping and search fails (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1751&quot;&gt;#1751&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also see release notes for:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.elasticsearch.org/download/2012/02/21/0.19.0.RC3.html&quot;&gt;0.19.0.RC3&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.elasticsearch.org/download/2012/02/08/0.19.0.RC2.html&quot;&gt;0.19.0.RC2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.elasticsearch.org/download/2012/02/07/0.19.0.RC1.html&quot;&gt;0.19.0.RC1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0.RC3 Released</title>
   <link href="http://elasticsearch.org/blog/2012/02/21/0.19.0.RC3-released.html"/>
   <updated>2012-02-21T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2012/02/21/0.19.0.RC3-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.0.RC3&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. Its another bug fix released and (hopefully) the final release of 0.19.0 release candidates.&lt;/p&gt;
&lt;p&gt;It also includes two nice features. The first is the ability to use &amp;#8220;date math&amp;#8221; on &lt;code&gt;date&lt;/code&gt; types (especially useful in &lt;code&gt;range&lt;/code&gt; queries/filters). See more info in the &lt;a href=&quot;https://github.com/elasticsearch/elasticsearch/issues/1708&quot;&gt;issue&lt;/a&gt; (and documented under the mapping date type).&lt;/p&gt;
&lt;p&gt;The second feature is a new &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; called &amp;#8220;Multi Search&amp;#8221; (or &lt;code&gt;msearch&lt;/code&gt;). It allows to construct a single request holding several search requests, executing them in the cluster (in parallel) and returning the results. More info on the format and how to use it can be found in the &lt;a href=&quot;https://github.com/elasticsearch/elasticsearch/issues/1722&quot;&gt;issue&lt;/a&gt; (and documented under the guide &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; section).&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0.RC3</title>
   <link href="http://elasticsearch.org/download/2012/02/21/0.19.0.RC3.html"/>
   <updated>2012-02-21T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/download/2012/02/21/0.19.0.RC3</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Upgrade Notes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (&lt;code&gt;curl host:9200/_flush&lt;/code&gt;) before shutting down the cluster, with no indexing operations happening after the flush.&lt;/li&gt;
	&lt;li&gt;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&amp;#8217;t downgrade without using them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New features:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Multi Search (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1722&quot;&gt;#1722&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Date Mapping: Support &amp;#8220;date math&amp;#8221; when searching (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1708&quot;&gt;#1708&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Indices query should accept alias names (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1698&quot;&gt;#1698&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Return 503 for search against a node which is not yet ready (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1713&quot;&gt;#1713&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Failed shards allocation can &amp;#8220;poison&amp;#8221; allocation and might cause not allocating other shards (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1717&quot;&gt;#1717&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Analysis: Add trim token filter that trims whitespaces (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1693&quot;&gt;#1693&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Index Templates: Allow to place them under config/templates (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1703&quot;&gt;#1703&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Local Gateway: Delete dangling indices after a (configurable) timeout, and not immediately  (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1718&quot;&gt;#1718&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Search: Allow to execute search with no parameters (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1696&quot;&gt;#1696&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Retrieving byte type stored field fails (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1702&quot;&gt;#1702&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;StackOverflowError when accessing NodeIndicesStats.refresh() (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1706&quot;&gt;#1706&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;top_children query returns no results when child field has the same name as a nested field as a nested field in the parent mapping (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1709&quot;&gt;#1709&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Search: When using &lt;code&gt;_all&lt;/code&gt; for types, field name/type resolution might fail (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1704&quot;&gt;#1704&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0.RC2 Released</title>
   <link href="http://elasticsearch.org/blog/2012/02/08/0.19.0.RC2-released.html"/>
   <updated>2012-02-08T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2012/02/08/0.19.0.RC2-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.0.RC2&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. Its a bug fix release mainly fixing a major bug in how buffers are read and reused over the network (the optimization done in 0.19.0.RC1 was not complete).&lt;/p&gt;
&lt;p&gt;It also include two nice features, the first is the ability to disallow a shard and its replica to be allocated on the same machine when running more than one instance on said machine. It can be enabled by setting &lt;code&gt;cluster.routing.allocation.same_shard.host&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The second is an effort to better log GC pause times (without needing to turn on GC logging), with GC type thresholds and logging thresholds (comes with built in default values).&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0.RC2</title>
   <link href="http://elasticsearch.org/download/2012/02/08/0.19.0.RC2.html"/>
   <updated>2012-02-08T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/download/2012/02/08/0.19.0.RC2</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Upgrade Notes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (&lt;code&gt;curl host:9200/_flush&lt;/code&gt;) before shutting down the cluster, with no indexing operations happening after the flush.&lt;/li&gt;
	&lt;li&gt;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&amp;#8217;t downgrade without using them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Avoid placing a shard replica on the same machine as shard itself (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1680&quot;&gt;#1680&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;GC logging: Enable back automatic gc logging based on thresholds (even if last gc is not available) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1679&quot;&gt;#1679&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Index &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Don&amp;#8217;t wait for new mappings to be applied on the cluster by default (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1677&quot;&gt;#1677&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nodes Info &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Add &lt;code&gt;all&lt;/code&gt; flag to return all data (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1676&quot;&gt;#1676&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Transport buffer overrun can happen because of byte buffer reading optimization introduced in 0.19.0.RC1 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1686&quot;&gt;#1686&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0.RC1 Released</title>
   <link href="http://elasticsearch.org/blog/2012/02/07/0.19.0.RC1-released.html"/>
   <updated>2012-02-07T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2012/02/07/0.19.0.RC1-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.19.0.RC1&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It is a major release candidate release of elasticsearch.&lt;/p&gt;
&lt;p&gt;This is the first time we release a &amp;#8220;release candidate&amp;#8221; for elasticsearch. The aim is to get users to try it out, fix any problems found with it, and release a final &lt;code&gt;0.19.0&lt;/code&gt; release as soon as possible.&lt;/p&gt;
&lt;p&gt;Major features include improved indexing performance, more control over shard allocation, more statistics and simpler &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; for stats, an update &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; that accepts a script to perform an update on a document, better state storage when using local gateway, and many bug fixes.&lt;/p&gt;
&lt;h2&gt;Upgrading&lt;/h2&gt;
&lt;p&gt;This release requires a full cluster restart in order to upgrade to the new version (including issuing a flush across all indices before the restart). If you are using the (default) local gateway, it will automatically be upgraded to a new and improved state format (with backups of the original state).&lt;/p&gt;
&lt;p&gt;The structure of the project has also changed, moving all the plugins to their own repos under &lt;a href=&quot;http://github.com/elasticsearch/&quot;&gt;github&lt;/a&gt;. Installing a plugin now requires specifying the location and version to install it from.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.19.0.RC1</title>
   <link href="http://elasticsearch.org/download/2012/02/07/0.19.0.RC1.html"/>
   <updated>2012-02-07T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/download/2012/02/07/0.19.0.RC1</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Upgrade Notes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Upgrading from 0.18 requires issuing a full flush of all the indices in the cluster (&lt;code&gt;curl host:9200/_flush&lt;/code&gt;) before shutting down the cluster, with no indexing operations happening after the flush.&lt;/li&gt;
	&lt;li&gt;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&amp;#8217;t downgrade without using them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Breaking changes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Blank routing should be ignored (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1450&quot;&gt;#1450&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Highlighting on term vector enabled field should not highlight filters by default (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1469&quot;&gt;#1469&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Migrate built in plugins to their own repos (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1520&quot;&gt;#1520&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Move project build to maven (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1523&quot;&gt;#1523&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Move phonetic token filter to a plugin (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1594&quot;&gt;#1594&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Improve serialization (stream) of &lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt; strings, note, requires flush when upgrading (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1595&quot;&gt;#1595&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Date Histogram Facet: Improve time zone handling, add factor option (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1580&quot;&gt;#1580&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Date Range: Inclusive upper range does not round up properly (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1463&quot;&gt;#1463&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Java &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Move all request builders to org.elasticsearch.action&amp;#8230; from org.elasticsearch.client.action (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1611&quot;&gt;#1611&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Node Stats &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Add specific flags for stats, simplified &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; paths (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1597&quot;&gt;#1597&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nodes Info &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Allow to specify which info to get back, simpler &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt; paths (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1596&quot;&gt;#1596&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Thread Pool: Add a specific thread pool for bulk indexing operations (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1668&quot;&gt;#1668&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New features:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Index shard search slow log (query and fetch) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1462&quot;&gt;#1462&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Upgrade to Lucene 3.5 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1502&quot;&gt;#1502&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Support Multicast discovery for external clients (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1532&quot;&gt;#1532&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Set an index / indices to read only, or make the cluster read only (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1573&quot;&gt;#1573&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Add query validation feature (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1574&quot;&gt;#1574&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Add thread_pool to nodes info and nodes stats APIs (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1601&quot;&gt;#1601&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Add generic execution of APIs to Client (and indices/cluster) and allow for plugins to register custom APIs (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1612&quot;&gt;#1612&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Local Gateway: Store specific index metadata under dedicated index locations (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1631&quot;&gt;#1631&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Plugins: Allow for plugins to implement onModule method that will be automatically injected with the relevant module type (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1613&quot;&gt;#1613&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Search: Support partial fields that can returns partial view of the _source (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1570&quot;&gt;#1570&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Update &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Allow to update a document based on a script (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1583&quot;&gt;#1583&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;AbstractCompoundWordTokenFilterFactory should store the dictionary as a CharArraySet instance, not a Set (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1449&quot;&gt;#1449&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;XContentBuilder to handle extended classes of java.util.Date (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1465&quot;&gt;#1465&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;HTTPS&lt;/span&gt; support for CouchDB river (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1480&quot;&gt;#1480&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Allow empty Strings to be null for Number&amp;#8217;s and don&amp;#8217;t autodetect empty string fields as string types (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1473&quot;&gt;#1473&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;By default, set http.compression to false (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1482&quot;&gt;#1482&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;DocumentMapper.java wrong order on build rootMappers (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1493&quot;&gt;#1493&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Support using _id:1234, or using term query/filter on _id even when _id is not indexed (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1496&quot;&gt;#1496&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Upgrade to netty 3.2.7 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1506&quot;&gt;#1506&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;When _source is disabled, don&amp;#8217;t return it in realtime get fetching the document from the transaction log (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1509&quot;&gt;#1509&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Improve highlighting perf (a bit) by reusing some constructs across hits (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1513&quot;&gt;#1513&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Allow to configure a shard with no file based data location locking (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1535&quot;&gt;#1535&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;source not returned when * specified in fields list (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1541&quot;&gt;#1541&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Generate pid file even when running in foreground mode (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1553&quot;&gt;#1553&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Improve multi field mapper with highlighting based on source (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1559&quot;&gt;#1559&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Allow search to continue when sort field is missing from type mapping (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1558&quot;&gt;#1558&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Filter cache to have just weighted (node) and none, and index query parser cache to be size based (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1590&quot;&gt;#1590&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;No master (startup / minimum_master_node) / not recovered blocks should cause proper failures on operations (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1589&quot;&gt;#1589&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;_open and _close does not resolve aliases (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1628&quot;&gt;#1628&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Better failure when passing invalid options to a query/filter (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1640&quot;&gt;#1640&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Allow for plugins to register &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; filter (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1658&quot;&gt;#1658&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;AWS&lt;/span&gt; Plugin: Add more automatic region configuration (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1490&quot;&gt;#1490&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Add a simplified setting to disable shutdown &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: action.disable_shutdown (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1606&quot;&gt;#1606&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Analysis:
	&lt;ul&gt;
		&lt;li&gt;Add language setting to lowercase filter, supporting greek and turkish (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1503&quot;&gt;#1503&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Support greek language in the stemmer filter (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1504&quot;&gt;#1504&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Add arabic, brazilian, czech to stemmer token filter language options (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1519&quot;&gt;#1519&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Add phonetic encodder called &lt;code&gt;bm&lt;/code&gt; or &lt;code&gt;beider_morse&lt;/code&gt; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1552&quot;&gt;#1552&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Analyze &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Allow to execute it without pre-creating an index, and allow to build custom analyzer (tokenizer + token_filters) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1555&quot;&gt;#1555&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Boolean Type: Consider &lt;code&gt;F&lt;/code&gt; as false as well when searching on it (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1556&quot;&gt;#1556&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Date Histogram Facet: Add &lt;code&gt;pre_offset&lt;/code&gt; and &lt;code&gt;post_offset&lt;/code&gt; options (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1599&quot;&gt;#1599&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Highlighter: Add require_field_match (both global and per field) option (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1577&quot;&gt;#1577&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Highlighting: Add boundary_chars and boundary_max_size to control text boundaries with fast vector highlighter (term vector) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1614&quot;&gt;#1614&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Index Allocation: allow to specify maximum total number of shards per node (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1650&quot;&gt;#1650&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Indices / Nodes stats: All &lt;code&gt;all&lt;/code&gt; flag to easily return all stats (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1662&quot;&gt;#1662&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;JVM&lt;/span&gt; Flags: Remove SurvivorRatio and MaxTenuringThreshold since the defaults are good with new JVMs (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1672&quot;&gt;#1672&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Jmx: Only register &lt;span class=&quot;caps&quot;&gt;JMX&lt;/span&gt; beans when jmx.create_connector is set to &lt;code&gt;true&lt;/code&gt;, or explicitly set by setting &lt;code&gt;jmx.export&lt;/code&gt; to true (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1666&quot;&gt;#1666&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Local Gateway: Move shard state to be stored under each shard, and not globally under _state (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1618&quot;&gt;#1618&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Mapping:
	&lt;ul&gt;
		&lt;li&gt;Improve applying guessed types on dynamic templates (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1446&quot;&gt;#1446&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;_source mapping to allow for format to convert to (if needed) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1639&quot;&gt;#1639&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Merge Scheduler: Allow to set index.merge.scheduler.max_merge_count (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1430&quot;&gt;#1430&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Multicast: Add discovery.zen.ping.multicast.ping.enabled setting to disable sending ping requests while still having multicast enabled (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1533&quot;&gt;#1533&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Network: Allow to specify sub interfaces (virtual) in network configuration (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1667&quot;&gt;#1667&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Node Stats:
	&lt;ul&gt;
		&lt;li&gt;Add fs level stats (size + iostats) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1622&quot;&gt;#1622&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;JVM&lt;/span&gt; stats to provide memory pools allocations (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1665&quot;&gt;#1665&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Add more options to get specific stats in &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt;: /&lt;em&gt;nodes/fs/stats (in addition to /&lt;/em&gt;nodes/stats/fs) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1674&quot;&gt;#1674&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Plugins: If a plugin has a bin directory, move it under the main bin location under the plugin name (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1584&quot;&gt;#1584&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query: Add &lt;code&gt;index.query.default_field&lt;/code&gt; allowing to control the default field used to search on (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1657&quot;&gt;#1657&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;:
	&lt;ul&gt;
		&lt;li&gt;indices query to allow to set a &lt;code&gt;no_match_query&lt;/code&gt; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1492&quot;&gt;#1492&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Replace index.query.bool.max_clause_count with indices.query.bool.max_clause_count (old one still supported) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1538&quot;&gt;#1538&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;query_string analyze wildcard option with prefix to automatically do OR&amp;#8217;ed wildcard when its broken down into several tokens (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1539&quot;&gt;#1539&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Allow to default certain settings in query_string / field queries (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1540&quot;&gt;#1540&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;custom_filters_score allow score_mode for &amp;#8220;min&amp;#8221; and &amp;#8220;multiply&amp;#8221; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1560&quot;&gt;#1560&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Add different execution models for terms filter (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1568&quot;&gt;#1568&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;prefix query to support _id (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1648&quot;&gt;#1648&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt;: &lt;code&gt;/&lt;/code&gt; to properly return error code (&lt;span class=&quot;caps&quot;&gt;HEAD&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;GET&lt;/span&gt;) when blocked (not recovered, no master), as well as cluster health (red == 503) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1633&quot;&gt;#1633&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;River: When deleting a river, make sure when its closed that its data is deleted (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1534&quot;&gt;#1534&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Scan Search: Improve performance while scrolling through it (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1579&quot;&gt;#1579&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Thread Pool: Add a dedicated thread pool for refresh (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1624&quot;&gt;#1624&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Translog: When not sync&amp;#8217;ing on each operation, buffer writes (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1549&quot;&gt;#1549&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Transport Client: Improve remote node freeze handling by adding another timeout layer (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1653&quot;&gt;#1653&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;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 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1671&quot;&gt;#1671&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;External data location configuration fails (path.data setting) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1429&quot;&gt;#1429&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;data.path locations are unevenly filled (0.18.2) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1436&quot;&gt;#1436&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Percolate / Analyzer &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; can hang if it fails to execute (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1457&quot;&gt;#1457&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Using root object level mapping (_size, _source) can cause reparsing of the mapping on startup (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1458&quot;&gt;#1458&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nested facet execution can fail with ArrayIndexOutOfBounds (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1467&quot;&gt;#1467&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Inner queries not resolved correctly in has_child filter when searching directly against the parent type (in the &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt; for example) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1471&quot;&gt;#1471&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Broken plugin script (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1474&quot;&gt;#1474&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Thrift transport handling unexpected &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt; hangs (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1484&quot;&gt;#1484&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;IndicesQueryBuilder generates the wrong query name (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1485&quot;&gt;#1485&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Multi field mapper with more than one extra mapping can cause endless re-sync&amp;#8217;ing of mapping between nodes (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1487&quot;&gt;#1487&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Using _parent:123 in a query string query fails to fetch docs (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1497&quot;&gt;#1497&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Registering a percolate query with additional &amp;#8220;object&amp;#8221; level metadata can fail (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1505&quot;&gt;#1505&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;search missing from stats when using clear and search params (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1516&quot;&gt;#1516&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Version missing a space (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1517&quot;&gt;#1517&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Default mapping means new types not mapped explicitly (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1524&quot;&gt;#1524&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;timestamp term match broken in 0.18.5 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1543&quot;&gt;#1543&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;0.18.5 ignores query string analyzer (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1547&quot;&gt;#1547&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Cluster metadata files destroyed when using blob store gateway causing data loss (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1564&quot;&gt;#1564&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nested objects not deleted on &amp;#8220;delete by query&amp;#8221; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1537&quot;&gt;#1537&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Two different indexes with the same nested object name causing ArrayIndexOutOfBoundsException (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1575&quot;&gt;#1575&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;TTL&lt;/span&gt; does not respect routing when expiring (deleting) documents (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1586&quot;&gt;#1586&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Multi Get does not respect routing set on aliases (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1591&quot;&gt;#1591&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Bulk &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; does delete item does not respect routing associated with an alias (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1592&quot;&gt;#1592&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;/_status doc count of index wrong (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1615&quot;&gt;#1615&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;0.18.7 Failure exception while executing a valid query after an invalid query (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1617&quot;&gt;#1617&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;index.recovery.initial_shards is not being taken into account (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1623&quot;&gt;#1623&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Removing a node with &lt;span class=&quot;caps&quot;&gt;TRACE&lt;/span&gt; logging enabled causes cluster state not to be properly updated (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1626&quot;&gt;#1626&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Published cluster state might override newer state (rarely) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1632&quot;&gt;#1632&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Terms Facet sorting does not handle null values properly with new &lt;span class=&quot;caps&quot;&gt;JDK&lt;/span&gt; 7 sorting (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1647&quot;&gt;#1647&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Cluster Allocation: cluster.routing.allocation.allow_rebalance does not allow for rebalancing on relocating shard (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1651&quot;&gt;#1651&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Couchdb River: since changes parameter (seq) is not url encoded (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1470&quot;&gt;#1470&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Index / Delete &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: timeout should apply automatically to the auto create index &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; master timeout (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1664&quot;&gt;#1664&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Indices Stats &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: Providing groups as part of the &lt;span class=&quot;caps&quot;&gt;HTTP&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; does not return stats for those groups (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1468&quot;&gt;#1468&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Java &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: ScriptSortBuilder does not pass the lang used (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1569&quot;&gt;#1569&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Multicast Discovery: if it fails, still start in a single cluster mode (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1608&quot;&gt;#1608&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nested queries: getDocIdSet NullPointerException (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1536&quot;&gt;#1536&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;:
	&lt;ul&gt;
		&lt;li&gt;Bool filter does not take should clauses properly into account (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1511&quot;&gt;#1511&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;query_string/field/text do not fail when an invalid analyzer is provided (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1663&quot;&gt;#1663&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Search:
	&lt;ul&gt;
		&lt;li&gt;Fetching fields that end up extracted from source might fail (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1431&quot;&gt;#1431&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Search requests execute by mistake on the networking http IO thread, causing other http operations to hang (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1455&quot;&gt;#1455&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;When searching against a type with a dfs search type, dfs is ignored (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1546&quot;&gt;#1546&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.18.7 Released</title>
   <link href="http://elasticsearch.org/blog/2012/01/10/0.18.7-released.html"/>
   <updated>2012-01-10T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2012/01/10/0.18.7-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.18.7&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It includes bug fixes including major bug fix in state storage with shared gateways (s3 for example), and support for nested documents in delete by query.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.18.7</title>
   <link href="http://elasticsearch.org/download/2012/01/10/0.18.7.html"/>
   <updated>2012-01-10T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/download/2012/01/10/0.18.7</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Cluster metadata files destroyed when using blob store gateway causing data loss (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1564&quot;&gt;#1564&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nested objects not deleted on &amp;#8220;delete by query&amp;#8221; (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1537&quot;&gt;#1537&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Two different indexes with the same nested object name causing ArrayIndexOutOfBoundsException (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1575&quot;&gt;#1575&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;TTL&lt;/span&gt; does not respect routing when expiring (deleting) documents (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1586&quot;&gt;#1586&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Java &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;: ScriptSortBuilder does not pass the lang used (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1569&quot;&gt;#1569&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;S3 blob storage gateway: deleting an index named x destroys data for any index with name beginning with x (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1582&quot;&gt;#1582&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.18.6 Released</title>
   <link href="http://elasticsearch.org/blog/2011/12/19/0.18.6-released.html"/>
   <updated>2011-12-19T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2011/12/19/0.18.6-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.18.6&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It includes minor features and important bug fixes. Changes can be found &lt;a href=&quot;https://github.com/elasticsearch/elasticsearch/issues?labels=v0.18.6&amp;amp;sort=created&amp;amp;direction=desc&amp;amp;state=closed&amp;amp;page=1&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>0.18.6</title>
   <link href="http://elasticsearch.org/download/2011/12/19/0.18.6.html"/>
   <updated>2011-12-19T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/download/2011/12/19/0.18.6</id>
   <author>
     <name></name>
   </author>
   <content type="html">&lt;h2&gt;Enhancements:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Improve highlighting perf (a bit) by reusing some constructs across hits (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1513&quot;&gt;#1513&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Analysis: Add arabic, brazilian, czech to stemmer token filter language options (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1519&quot;&gt;#1519&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;:
	&lt;ul&gt;
		&lt;li&gt;Replace index.query.bool.max_clause_count with indices.query.bool.max_clause_count (old one still supported) (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1538&quot;&gt;#1538&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;query_string analyze wildcard option with prefix to automatically do OR&amp;#8217;ed wildcard when its broken down into several tokens (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1539&quot;&gt;#1539&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;Allow to default certain settings in query_string / field queries (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1540&quot;&gt;#1540&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bug fixes:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;search missing from stats when using clear and search params (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1516&quot;&gt;#1516&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Version missing a space (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1517&quot;&gt;#1517&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;timestamp term match broken in 0.18.5 (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1543&quot;&gt;#1543&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;0.18.5 ignores query string analyzer (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1547&quot;&gt;#1547&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Nested queries: getDocIdSet NullPointerException (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1536&quot;&gt;#1536&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Query &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;: Bool filter does not take should clauses properly into account (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1511&quot;&gt;#1511&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Search: When searching against a type with a dfs search type, dfs is ignored (&lt;a href=&quot;http://github.com/elasticsearch/elasticsearch/issues/issue/1546&quot;&gt;#1546&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>0.18.5 Released</title>
   <link href="http://elasticsearch.org/blog/2011/11/29/0.18.5-released.html"/>
   <updated>2011-11-29T00:00:00-08:00</updated>
   <id>http://elasticsearch.com/blog/2011/11/29/0.18.5-released</id>
   <author>
     <name>Shay Banon</name>
   </author>
   <content type="html">&lt;p&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; version &lt;code&gt;0.18.5&lt;/code&gt; is out. You can download it &lt;a href=&quot;/download&quot;&gt;here&lt;/a&gt;. It includes an upgraded Lucene version (3.5), featuring bug fixes and memory improvements, as well as more bug fixes in elasticsearch itself. Changes can be found &lt;a href=&quot;https://github.com/elasticsearch/elasticsearch/issues?labels=v0.18.5&amp;amp;sort=created&amp;amp;direction=desc&amp;amp;state=closed&amp;amp;page=1&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 
</feed>

