What Is New in Elasticsearch 1.1
Elasticsearch 1.1 delivers significant performance gains, new aggregation capabilities, and crucial stability fixes. This release focuses on making distributed operations smoother and queries faster for production workloads.
| Category | Key Changes |
|---|---|
| New Features | Date Histogram Aggregation, Scripting Improvements, Query/Filter Merge |
| Performance | Reduced Memory Usage, Faster Indexing, Better Cache Handling |
| API Changes | Cluster State Endpoint, Bulk Processing Updates |
| Bug Fixes | Over 100 fixes for indexing, search, and cluster management |
How did aggregations improve in 1.1?
The date histogram aggregation is the standout new feature, allowing for powerful time-based data analysis. This lets you bucket results by time intervals directly, which is huge for building time series dashboards.
Scripting got a major upgrade with support for dynamic scripting using the native MVEL language. In practice, this means you can write more complex field manipulations and scoring logic directly in your queries without pre-processing data.
What performance optimizations were made?
Memory usage during indexing was significantly reduced, which helps prevent out-of-memory errors on data-heavy nodes. The field data cache also became smarter about eviction policies, keeping more relevant data in memory for faster search responses.
They made deep improvements to the internal Lucene segment merging process. This results in fewer I/O spikes and more consistent indexing throughput, especially on systems with rotating disks instead of SSDs.
Why did queries and filters merge?
The distinction between queries and filters was formally removed in the API, simplifying how you construct search requests. This unification means all query clauses now automatically cache when appropriate and can be used in any context.
You'll now use the query parameter everywhere instead of switching between query and filter objects. The old syntax still works but will trigger deprecation warnings, so it's worth updating your client code.
What cluster management changes arrived?
A new cluster state API endpoint (/_cluster/state) gives a cleaner view of your cluster's metadata, shard allocation, and routing tables. This is invaluable for debugging why a shard might be unassigned or where specific data lives.
Bulk processing became more resilient to malformed requests. Instead of failing the entire batch, it now continues processing valid items and returns errors separately, preventing single bad documents from taking down entire ingestion pipelines.
FAQ
Is the date histogram aggregation timezone-aware?
Yes, it fully supports timezone parameters. You can specify a timezone like "time_zone": "-01:00" to bucket your data according to a specific offset from UTC.
Does the query/filter merge break my existing code?
No, your existing code using the filter object will continue to work but will show a deprecation warning. The recommendation is to move all clauses into the query object.
What scripting languages are supported besides MVEL?
The native MVEL support is new, but you can still use the existing Groovy and JavaScript scripting plugins. The focus for native dynamic scripting in this release is on MVEL.
How much memory reduction can I expect from the indexing optimizations?
It varies by workload, but tests showed up to 20% less heap usage during heavy indexing bursts. The biggest gains are seen with many small documents and high indexing rates.
Can I still access the old cluster state format?
The old endpoints remain available, but the new /_cluster/state endpoint provides a more structured and readable response. The old format isn't deprecated yet.