What Is New in Elasticsearch 7.0
Elasticsearch 7.0 is a major release packed with performance enhancements, new data types, and significant internal changes to improve stability. This version sets the foundation for future scalability.
| Category | Key Updates |
|---|---|
| New Features | New data types, SQL support improvements, High-level REST Client completion |
| Performance & Scalability | Faster indexing, Optimized memory usage, Cluster coordination layer overhaul |
| Operations & Management | New cluster defaults, Deprecation of legacy features, Enhanced upgrade experience |
| Breaking Changes | Mapping, API, and Settings changes for long-term health |
What are the major performance upgrades?
The underlying cluster coordination layer has been completely rewritten. This new implementation significantly reduces the overhead of managing cluster state, leading to faster master elections and improved stability for large clusters.
Indexing performance saw a major boost with optimizations to the internal data structures. We're talking about raw speed improvements for ingesting data, which matters because it directly impacts how quickly data becomes searchable.
Memory usage is now more efficient. The engine uses less heap memory for the same amount of data, which in practice means you can run larger workloads on the same hardware or reduce your infrastructure costs.
What new data types were introduced?
Two new specialized data types, search_as_you_type and alias, are now generally available. The search_as_you_type field type is built specifically for powering fast, responsive autocomplete experiences directly within your mappings.
The alias field type lets you define an alternate name for a field in your documents. This is useful for maintaining backward compatibility when you need to rename a field without reindexing your entire dataset.
How has the upgrade process changed?
Upgrading to 7.0 from 6.x is designed to be a smoother experience. The system now performs a pre-flight check during upgrades to identify potential issues like deprecated mappings or settings that could cause problems.
This version also changes many default settings to be more optimal for new users out-of-the-box. For instance, the default number of shards per index is now 1, which prevents new clusters from being overwhelmed by shard proliferation.
What's new for developers using the REST Client?
The High-Level REST Client is now feature-complete, matching the capabilities of the older TransportClient. This is the final step in the migration path away from the TransportClient, which is now deprecated.
SQL support has been enhanced with additional functions and improved compatibility. You can now run more complex SQL queries directly against your Elasticsearch indices.
What breaking changes should I watch for?
The mapping and API changes are significant. For example, the _type field in APIs is largely removed, continuing the process started in 6.x to transition to a single-document-type-per-index model.
Several older APIs and settings have been deprecated or removed. You'll want to check if your code relies on any legacy features like the `_field_names` field or certain Java API methods that are now deprecated.
FAQ
Is the TransportClient finally gone in 7.0?
It's deprecated, not gone. The High-Level REST Client is now the official replacement and is feature-complete. You should migrate any existing code away from the TransportClient.
What's the deal with the new shard defaults?
The default number of primary shards per index is now 1 instead of 5. This prevents new users from accidentally creating a shard explosion, which was a common operational headache.
Can I still use multiple document types in a single index?
No, the removal of the `_type` concept is complete. You must use a single document type per index, which simplifies the internal data structures and improves performance.
How does the new cluster coordination help me?
The rewritten subsystem makes master elections faster and more reliable. In practice, your cluster will recover from node failures more quickly and handle state changes with less overhead.
What's the most important thing to check before upgrading?
Run the deprecation logging feature from 6.6+ to see if your application uses any APIs or settings that are now removed. This will identify breaking changes before they break your upgrade.