0.9.0
Release Notes:
Incompatible changes:
- Gateway: Internal refactoring, requires manual upgrade when using
fs gateway. (#232)
- This release allows a newly started node to reuse up-to-date files in the working directory, without having to pull them from the gateway/master every time. Makes restarting a node much faster. This feature requires complete data re-indexing. (Note that when re-indexing data the metadata is automatically re-created too.)
- The service wrapper has been moved to its own repo: http://github.com/elasticsearch/elasticsearch-servicewrapper. (#243)
- Jgroups has been removed – now uses Zen instead
- The
terms API has been replaced by facets in search. (#242)
- The
search.facets API has changed (see below)
- The shard level
index.store.memory settings have been replaced with a node level memory store. (#235)
- REST API: Cluster state (where possible) now returns the mappings as JSON, rather than as a string containing JSON.
- REST Search API: Change
score to _score to denote sorting by hit score. (#271)
- Removed cloud plugin
- Mapping: Revise dynamic mapping (into default), merge default to new mappings. (#275)
Enhancements:
Query DSL
- Term Facets: A lot of work has been done to improve facet support:
- Specify term facets that return the N most frequent terms that a field has, either globally, or bound by the search query (#207). See docs.
- Facets can be filtered, by the same filters used in queries (#217). See docs.
- A list of terms can be excluded from the results (#246). See docs.
- Statistical facets:
min, max, total, count, sum_of_squares, variance and std_deviation for numeric fields (#212). See docs.
- Scripted statistical facets: define a script to be evaluated with statistical facets (#227). See docs.
- Histogram facets: Create buckets from the values of one field (eg
timestamp) and query total and count for another field in the same doc (#219). See docs.
- Terms Factes: Allow to provide regex controlling which terms should be included. (#277)
- Custom scripts:
- Custom score (scripted) query. (#220)
- The
custom_score query uses the mvel scripting language to provide custom scoring for searches. For instance, you could use this to make documents with a more recent last_modified date more relevant than older documents. These mini-scripts can also accept parameters.
- Script fields – searches can use the mvel scripting language to return calculated fields. (#221)
- Fuzzy query support. (#213)
- Alternate syntax for
prefix (docs), term (docs), wildcard (docs), and span_term (docs) queries. (#192)
and, or and not filters (#216). See docs.
- Cluster state (see docs):
- Added parameters to filter the state on nodes, routing_table, metadata, and indices. (#234)
- Now also includes information about index
aliases, blocks and master_node id.
- Added
/_mapping, /{index}/_mapping and /{index}/{type}/_mapping to REST interface (#222). See docs.
- Return the
maxScore per search and _score for each search hit. (#205)
Other
- Memory management much improved
- Make replication type for
index, delete, and delete_by_query operations configurable: async or sync (#196).
- Java API has been improved (#199)
- FS Gateway: Added
index.gateway.fs.native_copy to control where native file copying will be used. (#202)
- Plugins: Easier to plugin a custom DSL query/filter parsers. (#208)
- Flush API: Added the
full parameter for a complete clean. (#210)
- Gateway: Configurable
recovery_after_time and recover_after_nodes. (#223)
- Automatic (and configurable) management of indexing buffer size. (#241)
- Better behaviour when the whole cluster is shut down. (#250)
- Time values (eg durations) now support days as well, eg “2d”
- Zen Discovery: Configure which nodes are or are not allowed to become master with
discovery.zen.master. (#248)
- Analysis:
- Fields that are not_analyzed should automatically default to keyword analyzer. (#229)
- When specifying empty array for stopwords, use an empty list for stopwords. (#230)
- Make merging mappings smarter. (#253)
- Translog: Implement a file system based translog and make it the default. (#260)
- If there isn’t a valid score for result hits then return
null for max_score value. (#263). The same logic applies also to _score values of individual documents.
- Support Cross-Origin resource in http/rest module. (#218)
- Cluster Health API: Add
wait_for_nodes (accepts “N”, “<N”, “>N”, “<=N”, and “>=N”). (#269)
- Implemented specific cloud plugin for AWS with S3 gateway and EC2 discovery.
- Analysis: Add pattern analyzer. (#276)
Bug fixes:
- Zen Discovery:
- Ungraceful shutdown of the master and start of replacement node might cause the cluster not to elect a new master. (#200)
- When a master node is forcefully killed, other nodes might not monitor the other elected master. (#224)
- A node might get into an infinite state of trying to find a master (when client / non_master) nodes exists. (#247)
- Don’t create / use the work directory if not needed (for example, on client / non data) nodes. (#249)
- Nodes Info API: Failed to generate REST response when node attributes are set. (#201)
- REST API does not expose node-master status. (#203)
- Query DSL: field query does not take into account
allow_leading_wildcards. (#236)
- Added checks to ensure survival when a cached stream is removed mid process
- Search requests hangs when no indices exists. (#209)
- Don’t fail when a flush cannot be completed
- Cluster state is now refreshed on restart, clearing out old information.
- Block operations performed on a cluster until it has recovered from the gateway. (#239)
- Put Mapping fails when an analyzer is specified that was not configured. (#252)
- Sorting breaks when sorting on a field that has no value in some documents.
- Facet results vary depending on size. (#259)
- Querying mapping on a non-master throws an error. (#261)
- Put Mapping: When updating existing mappings, the request returns with acknowledged `false`. (#262)
- Search: Sending a request that fails to parse can cause file leaks. (#270)
- Mapping: Dynamic mapping definitions are ignored. (#274)
Internal:
- Library upgrades:
- Lucene: now at version 3.0.2.
- netty: now at version 3.2.1 Final
- async http client: now at 1.0.0
- Use Java’s
user.dir as the default path.home location
- cached termsSet used in dfs phase
- Logging improvements
- Update build files to reference hamcrest
- Always start the unicast ping discovery, so unicast discovery will work even when using multicast
- Rest interface now accepts HTTP OPTIONS and HEAD
- Clean up files that are in the working directory but not in the gateway
- Big jarjar refactoring, guice now jarjar’ed
- Tcp Transport: Reduce
transport.tcp.connection_per_node from 5 to 1. (#225)
- Detect write errors early and notify transport handler
- Connect to a node when it joins the cluster on the disco level, so if it fails, it will be propagated back and the node will not be added to the cluster state
- Simplify netty transport to use single channel
- Refactor builder requets into common base class
- Groovy:
- Refactor util.xcontent to common.xcontent in client
- Add prepare methods to groovy APIs
- Gateway: HDFS gateway refactored to use the new common blobstore
- Improve join process in cluster, fetch the cluster meta-data on join and handle new meta data