ElasticSearch Gets Better Aggregation, Adds Groovy for Scripting
Dynamic Scripting was disabled by default in 1.2 for security reasons. It is now enabled by default for sandboxed languages. Groovy, which also gets sandboxing, now replaces MVEL as the language of choice for Scripting. MVEL is deprecated and will be removed in 1.4.
Other new Scripting features -
New Aggregation features -
Field Collapsing/Combining- this is useful for collapsing a group of values down to a single (or fixed) number of entries and suppressing duplicate documents
Percentile Ranks Aggregation – this experimental feature shows percentage of observed values which are below a certain value
Geo bounds aggregation on geo_point values for a field – this provides a bounding box covering all the values (for example, a sales region instead of individual sales cities)
Better performance of terms aggregation on high cardinality fields
collect_mode lets you define whether the parent-level aggregations get pruned before child aggregations are calculated first (breadth_first). In most queries, the depth-first default value (all branches are expanded in one-depth in first pass before being pruned) would give better results but for fields with many unique terms and small number of required results, breadth_first would be more efficient.
There are also several performance improvements both in indexing and I/O. Notably, Lucene 4.9 brings with it better compression, which improves both disk and memory usage. There are several resiliency improvements as well.
Todd Montgomery Dec 19, 2014