1.x
Migrating to OpenSearch and limits on the number of nested JSON objects
Migrating from Elasticsearch OSS version 6.8 to OpenSearch version 1.x will fail when a cluster contains any document that includes more than 10,000 nested JSON objects across all fields. Elasticsearch version 7.0 introduced the index.mapping.nested_objects.limit
setting to guard against out-of-memory errors and assigned the setting a default of 10000
. OpenSearch adopted this setting at its inception and enforces the limitation on nested JSON objects. However, because the setting is not present in Elasticsearch 6.8 and not recognized by this version, migration to OpenSearch 1.x can result in incompatibility issues that block shard relocation between Elasticsearch 6.8 and OpenSearch versions 1.x when the number of nested JSON objects in any document surpasses the default limit.
Therefore, we recommend evaluating your data for these limits before attempting to migrate from Elasticsearch 6.8.
2.0.0
Remove mapping types parameter
The type
parameter has been removed from all OpenSearch API endpoints. Instead, indexes can be categorized by document type. For more details, see issue #1940.
Deprecate non-inclusive terms
Non-inclusive terms are deprecated in version 2.x and will be permanently removed in OpenSearch 3.0. We are using the following replacements:
- “Whitelist” is now “Allow list”
- “Blacklist” is now “Deny list”
- “Master” is now “Cluster Manager”
Add OpenSearch Notifications plugins
In OpenSearch 2.0, the Alerting plugin is now integrated with new plugins for Notifications. If you want to continue to use the notification action in the Alerting plugin, install the new backend plugins notifications-core
and notifications
. If you want to manage notifications in OpenSearch Dashboards, use the new notificationsDashboards
plugin. For more information, see Notifications on the OpenSearch documentation page.
Drop support for JDK 8
A Lucene upgrade forced OpenSearch to drop support for JDK 8. As a consequence, the Java high-level REST client no longer supports JDK 8. Restoring JDK 8 support is currently an opensearch-java
proposal #156 and will require removing OpenSearch core as a dependency from the Java client (issue #262).
2.5.0
Wildcard query behavior for text fields
OpenSearch 2.5 contains a bug fix that corrects the behavior of the case_insensitive
parameter for the wildcard
query on text fields. As a result, a wildcard query on text fields that ignored case sensitivity and erroneously returned results prior to the bug fix will not return the same results. For more information, see issue #8711.
2.19.0
Nested value support in the text embedding processor
The text_embedding
processor no longer replaces nested values like _ingest._value
when evaluating fields like title_tmp:_ingest._value.title_embedding
. Instead, you must directly specify the nested key as books.title:title_embedding
to achieve the desired output. For more information, see issue #1243.
3.0.0
JDK requirement
The minimum supported JDK version is JDK 21.
System index access
Access to system indexes through the REST API is no longer provided. This functionality has been deprecated since OpenSearch 1.x. For more information, see issue #7936.
Document ID length limits
The document ID length limit of 512 bytes is now consistently enforced across all APIs, including the Bulk API. Previously, the Bulk API allowed document IDs longer than 512 bytes. For more information, see issue #6595.
Node role configuration
The configuration of empty node roles using environment variables has been fixed. Setting node.roles=
using environment variables now properly configures a coordinating-only node, consistent with the opensearch.yml
configuration. For more information, see issue #3412.
JSON processing limits
New default limits have been introduced for JSON processing (using the Jackson library) throughout OpenSearch:
- The maximum nesting depth of JSON objects and arrays is limited to 1,000 levels.
- The maximum length of JSON property names is limited to 50,000 units (bytes or chars, depending on the input source).
These limits help prevent potential memory issues and denial-of-service attacks. For more information, see issue #11278.
Nested query depth
A new index.query.max_nested_depth
setting has been introduced with a default value of 20
and a minimum value of 1
, limiting the maximum number of nesting levels for nested
queries. For more information, see issue #3268.
Thread pool settings
The following deprecated thread pool settings have been removed:
thread_pool.test.max_queue_size
thread_pool.test.min_queue_size
For more information, see issue #2595.
Index store settings
The index.store.hybrid.mmap.extensions
setting has been removed as part of improvements to hybridfs
file handling. For more information, see pull request #9392.
Transport Nio plugin
The transport-nio
plugin has been removed. Netty remains the standard network framework for both node-to-node and client-to-server communication. For more information, see issue #16887.
Nodes API response format
The format of indexing buffer values in the Nodes API response has changed:
total_indexing_buffer_in_bytes
now displays raw bytes (for example,53687091
).total_indexing_buffer
now displays human-readable format (for example,51.1mb
).
For more information, see pull request #17070.
PathHierarchy tokenizer
The camel case PathHierarchy
tokenizer name has been deprecated in favor of the snake case path_hierarchy
. For more information, see pull request #10894.
Security plugin
The Blake2b hash implementation now uses the salt parameter correctly, which will result in different (though correct) hash values compared to previous versions. For more information, see pull request #5089.
k-NN plugin
The following deprecated settings have been removed from the k-NN plugin:
knn.plugin.enabled
settingindex.knn.algo_param.ef_construction
index settingindex.knn.algo_param.m
index settingindex.knn.space_type
index setting
The NMSLIB engine is now deprecated. We recommend using the Faiss or Lucene engines instead.
For more information, see pull request #2564.
Performance Analyzer plugin
The performance-analyzer-rca
agent has been removed. We recommend transitioning to the Telemetry plugin for performance monitoring and analysis. The Telemetry plugin, using the OpenTelemetry framework, allows for seamless integration with lightweight open-source agents in order to publish performance metrics to observability stores. For more information, see issue #591.
SQL plugin
- The OpenSearch query domain-specific language (DSL) response format has been removed.
DELETE
statement support has been removed.- The
plugins.sql.delete.enabled
setting has been removed. - The legacy Spark Connector module has been deprecated. For information about connecting to Spark, see
async-query-core
. - Deprecated OpenDistro endpoints and legacy settings with the
opendistro
prefix have been removed. - The
plugins.sql.pagination.api
has been removed and the Scroll API has been deprecated. Pagination now defaults to Point in Time.
For more information, see issue #3248.
OpenSearch Dashboards
-
Discover experience:
- The
discover:newExperience
setting has been removed. - The DataGrid table feature has been removed.
For more information, see pull request #9511.
- The
-
Visualizations: The
dashboards-visualizations
plugin (including Gantt chart visualization) has been removed. We recommend transitioning to:- Vega visualization for flexible visualization needs.
- Trace analytics for trace-related use cases.
For more information, see issue #430.
Dashboards Observability plugin
The legacy notebooks feature has been removed from dashboards-observability
. Key changes include the following:
- Legacy notebooks (previously stored in the
.opensearch-observability
index) are no longer supported. - Only notebooks stored in the
.kibana
index (introduced in version 2.17) are supported. - You must migrate your notebooks to the new storage system before upgrading to version 3.0.
For more information, see issue #2350.