# OpenSearch: what changed from 2 to 3 - Product: OpenSearch (https://whatsnew.fyi/product/opensearch) - Vendor: OpenSearch Software Foundation - Range: changelog entries numbered after 2.19.6 up to and including 3.8.0, stable releases only - Entries below: 7 releases (newest first) - Resolved: 2 is 2.19.6 and 3 is 3.8.0, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 3 · Mentioning breaking changes: 0 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/opensearch/compare/2...3 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (126 changes, grouped by kind) ### Added #### 3.8.0 (2026-08-05) - Add API to modify a data stream's backing indices via POST /_data_stream/_modify - Add multivalue_doc_count aggregation that returns the number of documents with two or more values - Add pull-based ingestion from Hive tables via new ingestion-hive plugin - Add support for HTTP/3 on the client side via JDK HttpClient - Add gRPC support for Point-in-Time (PIT) create and delete operations - Add gRPC API support for extra_field_values in bulk requests - Add cross-cluster streaming support to the remote cluster client via Arrow Flight - Add coordinator-side index-level field domain pruning before can_match for faster time-range queries - Add bulkscorer script processing interface in ScriptScore query for bulk scoring optimizations - Add process-wide ObjectInputFilter to reject Java deserialization by default, gated behind bootstrap.serial_filter setting - Add cluster-level default setting for delayed shard allocation timeout cluster.routing.allocation.unassigned.node_left.delayed_timeout #### 3.7.0 (2026-06-09) - Dynamic properties support for pattern-based field definitions without cluster state mapping updates - Pluggable data format engine with DataFormatAwareEngine for multi-format indexing - Lucene engine implementation for pluggable data formats - Merge support for Parquet data format plugin via streaming k-way merge sort - Directory and IndexInput layers for WritableWarm tiered storage - Server-side implementation for tiering status APIs (GetTieringStatus and ListTieringStatus) - Server-side implementation for HotToWarm, WarmToHot, and CancelTiering APIs - Prefetch settings and stored fields prefetch for WritableWarm tiered storage - Slow logs, per-query metrics, and migration metrics for WritableWarm tiered storage - Module wiring and integration tests for WritableWarm tiered storage - Tiered object storage crate for warm node file routing - Event-driven scheduler and stage execution for analytics engine - Coordinator-side DataFusion reduce with streaming Arrow batches - Distributed aggregation with partial/final mode for analytics engine - Distributed join planning and execution for analytics engine - PPL append command support with multi-child stage runtime for Union - PPL dedup command support via ROW_NUMBER window function - PPL eventstats and streamstats window function support - PPL top and rare command support via window functions - PPL parse command with regex mode via Rust UDFs #### 3.6.0 (2026-04-07) - Add bitmap64 query support - Add warmup phase for pull-based ingestion to prevent serving stale data before catching up with the streaming source - Implement field_mapping ingestion message mapper for pull-based ingestion - Add mapper_settings support and field_mapping mapper type for pull-based ingestion - Add index warmer support for replica shards using segment replication - Add indices to search request slow log for easier request identification - Add node-level JVM and CPU runtime metrics following OpenTelemetry semantic conventions - Add new Sensitive setting property for tiering dynamic settings authorization - Add adaptive shard selection for bulk writes on append-only indices - Add support for expected remote cluster name validation in CCS sniff mode - Add search_settings support to WLM workload groups with initial timeout setting - Add scroll API support for workload management rule-based autotagging - Add stream request flag to SearchRequestContext for plugin consumption - Add intra-segment support for single-value metric aggregations (sum, min, max, avg, stats, cardinality, value_count) - Add ref_path support for package-based Hunspell dictionary loading with multi-tenant isolation - Add indexer interface to decouple IndexShard from Engine for pluggable engine architectures #### 3.5.0 (2026-02-12) - Support for fields containing dots in their name as literals - Support for forward translog reading - Public getter method in SourceFieldMapper to return excluded field - Relax jar hell check when extended plugins share transitive dependencies - Public getter method in SourceFieldMapper to return included field - Support for HTTP/3 server side - Circuit breaker support for gRPC transport to prevent out-of-memory errors - Index-level-encryption support for snapshots and remote-store - Support for hll field mapper to support cardinality rollups - Tracing support for StreamingRestChannel - New libs/netty4 module to share common implementation between netty-based plugins and modules - Validation to make crypto store settings immutable - Concurrent translog recovery to accelerate segment replication primary promotion - X-Request-Id to uniquely identify a search request - TopN selection logic for streaming terms aggregations - Support for Intra Segment Search - AdditionalCodecs and EnginePlugin::getAdditionalCodecs hook to allow additional Codec registration #### 3.4.0 (2025-12-17) - Allow setting index.creation_date on index creation and restore for plugin compatibility and migrations - Add support for a ForkJoinPool type - Add separate shard limit validation for local and remote indices - Use Lucene pack method for half_float and unsigned_long when using ApproximatePointRangeQuery - New cluster setting search.query.max_query_string_length_monitor_only - Add a mapper for context aware segments grouping criteria - Return full error for GRPC error response - Add support for repository with Server side encryption enabled and client side encryption as well based on a flag - Add pluggable gRPC interceptors with explicit ordering - Add BindableServices extension point to transport-grpc-spi - Add metrics for the merged segment warmer feature - Handle deleted documents for filter rewrite sub-aggregation optimization - Add bulk collect API for filter rewrite sub-aggregation optimization - Allow collectors take advantage of preaggregated data using collectRange API - Bulk collection logic for metrics and cardinality aggregations - Add pointer based lag metric in pull-based ingestion - Introduce internal API for retrieving metadata about requested indices from transport actions - Add cluster defaults for merge autoThrottle, maxMergeThreads, and maxMergeCount; add segment size filter to the merged segment warmer - Add build-tooling to run in FIPS environment - Add SMILE/CBOR/YAML document format support to Bulk GRPC endpoint ### Changed #### 3.8.0 (2026-08-05) - Add HTTP request body decompression (gzip/deflate) to reactor-netty4 transport - Add cross-setting validator to prevent cluster-manager crash loop when both balance factors are set to zero - Add support for double, int, and long types in ExtraFieldValue for gRPC bulk indexing - Add timing logs for repository create, update, and delete operations - Disable Mustache partial template resolution in search templates - Use binary serialization for resource usage headers to reduce CPU overhead on the search path #### 3.6.0 (2026-04-07) - Remove experimental tag for pull-based ingestion, marking it as public API - Support Docker distribution builds for ppc64le, arm64, and s390x architectures - Fallback to Netty HTTP client when AWS CRT client is unavailable on the target platform - Expose wrapped scorer in ProfileScorer for plugin access to custom scorer methods - Remove X-Request-Id format restrictions and make maximum length configurable - Make telemetry Tags immutable with allocation-efficient factories and content-based equality - Prevent criteria field updates for context-aware indices to simplify version management - Use ReadAdviseByContext for MMapDirectory instead of Lucene default read advise #### 3.5.0 (2026-02-12) - Handle custom metadata files in subdirectory-store - Add support for missing proto fields in GRPC FunctionScore and Highlight - Use compact object headers with JDK25+ #### 3.4.0 (2025-12-17) - Combining filter rewrite and skip list to optimize sub aggregation ### Fixed #### 3.8.0 (2026-08-05) - Fix OpenSearchTimeoutException to return HTTP 504 instead of 500 - Fix ClassCastException on malformed mappings in create index to return 400 instead of 500 #### 3.6.0 (2026-04-07) - Fix copy_to functionality for geo_point fields with object and array values - Fix field_caps returning empty results for disable_objects mappings and field name corruption - Fix terms lookup subquery to use cluster max_clause_count setting instead of hardcoded fallback - Fix terms aggregation performance regression on high-cardinality fields by adding a max cardinality setting - Fix terms aggregation performance regression using segment-to-global ordinals mapping - Fix array_index_out_of_bounds_exception with wildcard and aggregations under concurrent access - Add range validations in query builder and field mapper - Fix synonym_graph filter failure with word_delimiter_graph by handling analyzer dependency ordering - Fix index template pattern collision false positives for multi-wildcard patterns - Fix SecurityException when using opensearch.cgroups.hierarchy.override setting - Fix SLF4J component error caused by slf4j-api version mismatch with log4j binding - Fix JSON escaping in task details log metadata - Fix ProfileScorer.getChildren() to expose wrapped scorer in the scorer tree hierarchy #### 3.5.0 (2026-02-12) - Fix Snapshot rename replacement unbounded length rename #### 3.3.2 (2025-10-30) - Fix sub-aggregator casting for search with profile=true in Star Tree - Allow JRT protocol URLs in protection domain extraction for Java Agent - Fix bwc @timestamp upgrade issue by adding a version check on skip_list param (also in 3.3.1) - Fix issue with updating core with a patch number other than 0 (also in 3.3.1) - Fix IndexOutOfBoundsException when running include/exclude on non-existent prefix in terms aggregations - Add S3Repository.LEGACY_MD5_CHECKSUM_CALCULATION to list of repository-s3 settings #### 3.3.1 (2025-10-22) - Fix sub-aggregator casting for search with profile=true ### Deprecated #### 3.8.0 (2026-08-05) - Deprecate RestClient in favor of the internal HTTP client ## Release notes ### 3.8.0 - Date: 2026-08-05 - Version: 3.8.0 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.8.0 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.8.0 - **added** — Add API to modify a data stream's backing indices via POST /_data_stream/_modify - **added** — Add multivalue_doc_count aggregation that returns the number of documents with two or more values - **added** — Add pull-based ingestion from Hive tables via new ingestion-hive plugin - **added** — Add support for HTTP/3 on the client side via JDK HttpClient - **added** — Add gRPC support for Point-in-Time (PIT) create and delete operations - **added** — Add gRPC API support for extra_field_values in bulk requests - **added** — Add cross-cluster streaming support to the remote cluster client via Arrow Flight - **added** — Add coordinator-side index-level field domain pruning before can_match for faster time-range queries - **added** — Add bulkscorer script processing interface in ScriptScore query for bulk scoring optimizations - **added** — Add process-wide ObjectInputFilter to reject Java deserialization by default, gated behind bootstrap.serial_filter setting - **added** — Add cluster-level default setting for delayed shard allocation timeout cluster.routing.allocation.unassigned.node_left.delayed_timeout - **changed** — Add HTTP request body decompression (gzip/deflate) to reactor-netty4 transport - **changed** — Add cross-setting validator to prevent cluster-manager crash loop when both balance factors are set to zero - **changed** — Add support for double, int, and long types in ExtraFieldValue for gRPC bulk indexing - **changed** — Add timing logs for repository create, update, and delete operations - **deprecated** — Deprecate RestClient in favor of the internal HTTP client - **changed** — Disable Mustache partial template resolution in search templates - **changed** — Use binary serialization for resource usage headers to reduce CPU overhead on the search path - **fixed** — Fix OpenSearchTimeoutException to return HTTP 504 instead of 500 - **fixed** — Fix ClassCastException on malformed mappings in create index to return 400 instead of 500 ##### Version 3.8.0 Release Notes Compatible with OpenSearch and OpenSearch Dashboards version 3.8.0 ###### Features * Add API to modify a data stream's backing indices (`POST /_data_stream/_modify`) ([#22487](https://github.com/opensearch-project/OpenSearch/pull/22487)) * Add `multivalue_doc_count` aggregation that returns the number of documents with two or more values ([#20472](https://github.com/opensearch-project/OpenSearch/pull/20472)) * Add pull-based ingestion from Hive tables via new `ingestion-hive` plugin ([#21700](https://github.com/opensearch-project/OpenSearch/pull/21700)) * Add support for HTTP/3 on the client side via JDK HttpClient ([#21718](https://github.com/opensearch-project/OpenSearch/pull/21718)) * Add gRPC support for Point-in-Time (PIT) create and delete operations ([#22105](https://github.com/opensearch-project/OpenSearch/pull/22105)) * Add gRPC API support for `extra_field_values` in bulk requests ([#21907](https://github.com/opensearch-project/OpenSearch/pull/21907)) * Add cross-cluster streaming support to the remote cluster client via Arrow Flight ([#22359](https://github.com/opensearch-project/OpenSearch/pull/22359)) * Add coordinator-side index-level field domain pruning before `can_match` for faster time-range queries ([#21865](https://github.com/opensearch-project/OpenSearch/pull/21865)) * Add bulkscorer script processing interface in ScriptScore query for bulk scoring optimizations ([#22423](https://github.com/opensearch-project/OpenSearch/pull/22423)) * Add process-wide ObjectInputFilter to reject Java deserialization by default, gated behind `bootstrap.serial_filter` setting ([#22073](https://github.com/opensearch-project/OpenSearch/pull/22073)) * Add cluster-level default setting for delayed shard allocation timeout (`cluster.routing.allocation.unassigned.node_left.delayed_timeout`) ([#22379](https://github.com/opensearch-project/OpenSearch/pull/22379)) ###### Enhancements * Add HTTP request body decompression (gzip/deflate) to reactor-netty4 transport ([#22382](https://github.com/opensearch-project/OpenSearch/pull/22382)) * Add cross-setting validator to prevent cluster-manager crash loop when both balance factors are set to zero ([#22391](https://github.com/opensearch-project/OpenSearch/pull/22391)) * Add support for double, int, and long types in ExtraFieldValue for gRPC bulk indexing ([#22058](https://github.com/opensearch-project/OpenSearch/pull/22058)) * Add timing logs for repository create, update, and delete operations ([#22489](https://github.com/opensearch-project/OpenSearch/pull/22489)) * Add parent action name to `ProcessorGenerationContext` for conditional system-generated processor logic ([#22195](https://github.com/opensearch-project/OpenSearch/pull/22195)) * Add getter for remote translog transfer tracker to enable plugin access to tracking metrics ([#22453](https://github.com/opensearch-project/OpenSearch/pull/22453)) * Deprecate `RestClient` in favor of the internal HTTP client ([#22116](https://github.com/opensearch-project/OpenSearch/pull/22116)) * Disable Mustache partial template resolution in search templates ([#22438](https://github.com/opensearch-project/OpenSearch/pull/22438)) * Use binary serialization for resource usage headers to reduce CPU overhead on the search path ([#21230](https://github.com/opensearch-project/OpenSearch/pull/21230)) * Preserve resolved search pipeline id and inline pipeline source through query rewrite ([#22501](https://github.com/opensearch-project/OpenSearch/pull/22501)) * Fork `GET _aliases` serialization to MANAGEMENT thread pool to avoid blocking transport threads ([#21954](https://github.com/opensearch-project/OpenSearch/pull/21954)) * Strengthen `scroll_id` validation to prevent OOM from crafted scroll IDs ([#22396](https://github.com/opensearch-project/OpenSearch/pull/22396)) * Add depth tracking to recursive deserialization to prevent StackOverflowError ([#22404](https://github.com/opensearch-project/OpenSearch/pull/22404)) _[Truncated at 4000 characters — full notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.8.0]_ ### 3.7.0 - Date: 2026-06-09 - Version: 3.7.0 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.7.0 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.7.0 - **added** — Dynamic properties support for pattern-based field definitions without cluster state mapping updates - **added** — Pluggable data format engine with DataFormatAwareEngine for multi-format indexing - **added** — Lucene engine implementation for pluggable data formats - **added** — Merge support for Parquet data format plugin via streaming k-way merge sort - **added** — Directory and IndexInput layers for WritableWarm tiered storage - **added** — Server-side implementation for tiering status APIs (GetTieringStatus and ListTieringStatus) - **added** — Server-side implementation for HotToWarm, WarmToHot, and CancelTiering APIs - **added** — Prefetch settings and stored fields prefetch for WritableWarm tiered storage - **added** — Slow logs, per-query metrics, and migration metrics for WritableWarm tiered storage - **added** — Module wiring and integration tests for WritableWarm tiered storage - **added** — Tiered object storage crate for warm node file routing - **added** — Event-driven scheduler and stage execution for analytics engine - **added** — Coordinator-side DataFusion reduce with streaming Arrow batches - **added** — Distributed aggregation with partial/final mode for analytics engine - **added** — Distributed join planning and execution for analytics engine - **added** — PPL append command support with multi-child stage runtime for Union - **added** — PPL dedup command support via ROW_NUMBER window function - **added** — PPL eventstats and streamstats window function support - **added** — PPL top and rare command support via window functions - **added** — PPL parse command with regex mode via Rust UDFs ##### Version 3.7.0 Release Notes Compatible with OpenSearch and OpenSearch Dashboards version 3.7.0 ###### Features * Add dynamic properties support for pattern-based field definitions without cluster state mapping updates ([#20816](https://github.com/opensearch-project/OpenSearch/pull/20816)) * Add pluggable data format engine with DataFormatAwareEngine for multi-format indexing ([#21181](https://github.com/opensearch-project/OpenSearch/pull/21181)) * Add Lucene engine implementation for pluggable data formats ([#21299](https://github.com/opensearch-project/OpenSearch/pull/21299)) * Add merge support for Parquet data format plugin via streaming k-way merge sort ([#21079](https://github.com/opensearch-project/OpenSearch/pull/21079)) * Add directory and IndexInput layers for WritableWarm tiered storage ([#21178](https://github.com/opensearch-project/OpenSearch/pull/21178)) * Add server-side implementation for tiering status APIs (GetTieringStatus and ListTieringStatus) ([#21220](https://github.com/opensearch-project/OpenSearch/pull/21220)) * Add server-side implementation for HotToWarm, WarmToHot, and CancelTiering APIs ([#21295](https://github.com/opensearch-project/OpenSearch/pull/21295)) * Add prefetch settings and stored fields prefetch for WritableWarm tiered storage ([#21285](https://github.com/opensearch-project/OpenSearch/pull/21285)) * Add slow logs, per-query metrics, and migration metrics for WritableWarm tiered storage ([#21332](https://github.com/opensearch-project/OpenSearch/pull/21332)) * Add module wiring and integration tests for WritableWarm tiered storage ([#21427](https://github.com/opensearch-project/OpenSearch/pull/21427)) * Add tiered object storage crate for warm node file routing ([#21204](https://github.com/opensearch-project/OpenSearch/pull/21204)) * Add event-driven scheduler and stage execution for analytics engine ([#21242](https://github.com/opensearch-project/OpenSearch/pull/21242)) * Add coordinator-side DataFusion reduce with streaming Arrow batches ([#21356](https://github.com/opensearch-project/OpenSearch/pull/21356)) * Add distributed aggregation with partial/final mode for analytics engine ([#21457](https://github.com/opensearch-project/OpenSearch/pull/21457)) * Add distributed join planning and execution for analytics engine ([#21639](https://github.com/opensearch-project/OpenSearch/pull/21639)) * Add PPL `append` command support with multi-child stage runtime for Union ([#21474](https://github.com/opensearch-project/OpenSearch/pull/21474)) * Add PPL `dedup` command support via ROW_NUMBER window function ([#21622](https://github.com/opensearch-project/OpenSearch/pull/21622)) * Add PPL `eventstats` and `streamstats` window function support ([#21734](https://github.com/opensearch-project/OpenSearch/pull/21734)) * Add PPL `top` and `rare` command support via window functions ([#21593](https://github.com/opensearch-project/OpenSearch/pull/21593)) * Add PPL `parse` command with regex mode via Rust UDFs ([#21573](https://github.com/opensearch-project/OpenSearch/pull/21573)) * Add PPL `rex` command with sed and extract modes ([#21550](https://github.com/opensearch-project/OpenSearch/pull/21550)) * Add PPL `spath` command with auto-extract mode via json_extract_all UDF ([#21664](https://github.com/opensearch-project/OpenSearch/pull/21664)) * Add 7 PPL JSON scalar functions to analytics engine route ([#21513](https://github.com/opensearch-project/OpenSearch/pull/21513)) * Add 23 PPL datetime scalar functions to analytics engine route ([#21556](https://github.com/opensearch-project/OpenSearch/pull/21556)) * Add 14 additional PPL datetime functions (Wave A) including strftime, date_format, maketime ([#21582](https://github.com/opensearch-project/OpenSearch/pull/21582)) * Add 30+ PPL math scalar functions to analytics engine ([#21520](https://github.com/opensearch-project/OpenSearch/pull/21520)) * Add PPL string scalar functions to analytics engine (18 functions) ([ _[Truncated at 4000 characters — full notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.7.0]_ ### 3.6.0 - Date: 2026-04-07 - Version: 3.6.0 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.6.0 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.6.0 - **added** — Add bitmap64 query support - **added** — Add warmup phase for pull-based ingestion to prevent serving stale data before catching up with the streaming source - **added** — Implement field_mapping ingestion message mapper for pull-based ingestion - **added** — Add mapper_settings support and field_mapping mapper type for pull-based ingestion - **added** — Add index warmer support for replica shards using segment replication - **added** — Add indices to search request slow log for easier request identification - **added** — Add node-level JVM and CPU runtime metrics following OpenTelemetry semantic conventions - **added** — Add new Sensitive setting property for tiering dynamic settings authorization - **added** — Add adaptive shard selection for bulk writes on append-only indices - **added** — Add support for expected remote cluster name validation in CCS sniff mode - **added** — Add search_settings support to WLM workload groups with initial timeout setting - **added** — Add scroll API support for workload management rule-based autotagging - **added** — Add stream request flag to SearchRequestContext for plugin consumption - **added** — Add intra-segment support for single-value metric aggregations (sum, min, max, avg, stats, cardinality, value_count) - **added** — Add ref_path support for package-based Hunspell dictionary loading with multi-tenant isolation - **added** — Add indexer interface to decouple IndexShard from Engine for pluggable engine architectures - **changed** — Remove experimental tag for pull-based ingestion, marking it as public API - **changed** — Support Docker distribution builds for ppc64le, arm64, and s390x architectures - **changed** — Fallback to Netty HTTP client when AWS CRT client is unavailable on the target platform - **changed** — Expose wrapped scorer in ProfileScorer for plugin access to custom scorer methods - **changed** — Remove X-Request-Id format restrictions and make maximum length configurable - **changed** — Make telemetry Tags immutable with allocation-efficient factories and content-based equality - **changed** — Prevent criteria field updates for context-aware indices to simplify version management - **changed** — Use ReadAdviseByContext for MMapDirectory instead of Lucene default read advise - **fixed** — Fix copy_to functionality for geo_point fields with object and array values - **fixed** — Fix field_caps returning empty results for disable_objects mappings and field name corruption - **fixed** — Fix terms lookup subquery to use cluster max_clause_count setting instead of hardcoded fallback - **fixed** — Fix terms aggregation performance regression on high-cardinality fields by adding a max cardinality setting - **fixed** — Fix terms aggregation performance regression using segment-to-global ordinals mapping - **fixed** — Fix array_index_out_of_bounds_exception with wildcard and aggregations under concurrent access - **fixed** — Add range validations in query builder and field mapper - **fixed** — Fix synonym_graph filter failure with word_delimiter_graph by handling analyzer dependency ordering - **fixed** — Fix index template pattern collision false positives for multi-wildcard patterns - **fixed** — Fix SecurityException when using opensearch.cgroups.hierarchy.override setting - **fixed** — Fix SLF4J component error caused by slf4j-api version mismatch with log4j binding - **fixed** — Fix JSON escaping in task details log metadata - **fixed** — Fix ProfileScorer.getChildren() to expose wrapped scorer in the scorer tree hierarchy ##### Version 3.6.0 Release Notes Compatible with OpenSearch and OpenSearch Dashboards version 3.6.0 ###### Features * Add bitmap64 query support ([#20606](https://github.com/opensearch-project/OpenSearch/pull/20606)) * Add warmup phase for pull-based ingestion to prevent serving stale data before catching up with the streaming source ([#20526](https://github.com/opensearch-project/OpenSearch/pull/20526)) * Implement field_mapping ingestion message mapper for pull-based ingestion ([#20729](https://github.com/opensearch-project/OpenSearch/pull/20729)) * Add mapper_settings support and field_mapping mapper type for pull-based ingestion ([#20722](https://github.com/opensearch-project/OpenSearch/pull/20722)) * Remove experimental tag for pull-based ingestion, marking it as public API ([#20704](https://github.com/opensearch-project/OpenSearch/pull/20704)) ###### Enhancements * Add index warmer support for replica shards using segment replication ([#20650](https://github.com/opensearch-project/OpenSearch/pull/20650)) * Add indices to search request slow log for easier request identification ([#20588](https://github.com/opensearch-project/OpenSearch/pull/20588)) * Add node-level JVM and CPU runtime metrics following OpenTelemetry semantic conventions ([#20844](https://github.com/opensearch-project/OpenSearch/pull/20844)) * Add new `Sensitive` setting property for tiering dynamic settings authorization ([#20901](https://github.com/opensearch-project/OpenSearch/pull/20901)) * Add adaptive shard selection for bulk writes on append-only indices ([#20065](https://github.com/opensearch-project/OpenSearch/pull/20065)) * Add support for expected remote cluster name validation in CCS sniff mode ([#20532](https://github.com/opensearch-project/OpenSearch/pull/20532)) * Add `search_settings` support to WLM workload groups with initial `timeout` setting ([#20536](https://github.com/opensearch-project/OpenSearch/pull/20536)) * Add scroll API support for workload management rule-based autotagging ([#20151](https://github.com/opensearch-project/OpenSearch/pull/20151)) * Add stream request flag to SearchRequestContext for plugin consumption ([#20530](https://github.com/opensearch-project/OpenSearch/pull/20530)) * Support Docker distribution builds for ppc64le, arm64, and s390x architectures ([#20678](https://github.com/opensearch-project/OpenSearch/pull/20678)) * Fallback to Netty HTTP client when AWS CRT client is unavailable on the target platform ([#20698](https://github.com/opensearch-project/OpenSearch/pull/20698)) * Add intra-segment support for single-value metric aggregations (sum, min, max, avg, stats, cardinality, value_count) ([#20503](https://github.com/opensearch-project/OpenSearch/pull/20503)) * Expose wrapped scorer in ProfileScorer for plugin access to custom scorer methods ([#20549](https://github.com/opensearch-project/OpenSearch/pull/20549)) * Fix ProfileScorer.getChildren() to expose wrapped scorer in the scorer tree hierarchy ([#20607](https://github.com/opensearch-project/OpenSearch/pull/20607)) * Remove X-Request-Id format restrictions and make maximum length configurable ([#21048](https://github.com/opensearch-project/OpenSearch/pull/21048)) * Make telemetry Tags immutable with allocation-efficient factories and content-based equality ([#20788](https://github.com/opensearch-project/OpenSearch/pull/20788)) * Add `ref_path` support for package-based Hunspell dictionary loading with multi-tenant isolation ([#20840](https://github.com/opensearch-project/OpenSearch/pull/20840)) * Prevent criteria field updates for context-aware indices to simplify version management ([#20250](https://github.com/opensearch-project/OpenSearch/pull/20250)) * Add indexer interface to decouple IndexShard from Engine for pluggable engine architectures ([#20675](https://github.com/opensearch-project/OpenSearch/pull/20675)) * Use `ReadAdviseByContext` for MMapDirectory instead of Lucene default read advise ([#21062](https://github.com/opensearch-proje _[Truncated at 4000 characters — full notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.6.0]_ ### 3.5.0 - Date: 2026-02-12 - Version: 3.5.0 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.5.0 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.5.0 - **added** — Support for fields containing dots in their name as literals - **added** — Support for forward translog reading - **added** — Public getter method in SourceFieldMapper to return excluded field - **added** — Relax jar hell check when extended plugins share transitive dependencies - **added** — Public getter method in SourceFieldMapper to return included field - **added** — Support for HTTP/3 server side - **added** — Circuit breaker support for gRPC transport to prevent out-of-memory errors - **added** — Index-level-encryption support for snapshots and remote-store - **added** — Support for hll field mapper to support cardinality rollups - **added** — Tracing support for StreamingRestChannel - **added** — New libs/netty4 module to share common implementation between netty-based plugins and modules - **added** — Validation to make crypto store settings immutable - **added** — Concurrent translog recovery to accelerate segment replication primary promotion - **added** — X-Request-Id to uniquely identify a search request - **added** — TopN selection logic for streaming terms aggregations - **added** — Support for Intra Segment Search - **added** — AdditionalCodecs and EnginePlugin::getAdditionalCodecs hook to allow additional Codec registration - **changed** — Handle custom metadata files in subdirectory-store - **changed** — Add support for missing proto fields in GRPC FunctionScore and Highlight - **changed** — Use compact object headers with JDK25+ - **fixed** — Fix Snapshot rename replacement unbounded length rename ##### Version 3.5.0 Release Notes Compatible with OpenSearch and OpenSearch Dashboards version 3.5.0 ###### Added - Add support for fields containing dots in their name as literals ([#19958](https://github.com/opensearch-project/OpenSearch/pull/19958)) - Add support for forward translog reading ([#20163](https://github.com/opensearch-project/OpenSearch/pull/20163)) - Added public getter method in `SourceFieldMapper` to return excluded field ([#20205](https://github.com/opensearch-project/OpenSearch/pull/20205)) - Add integ test for simulating node join left event when data node cluster state publication lag because the cluster applier thread being busy ([#19907](https://github.com/opensearch-project/OpenSearch/pull/19907)). - Relax jar hell check when extended plugins share transitive dependencies ([#20103](https://github.com/opensearch-project/OpenSearch/pull/20103)) - Added public getter method in `SourceFieldMapper` to return included field ([#20290](https://github.com/opensearch-project/OpenSearch/pull/20290)) - Support for HTTP/3 (server side) ([#20017](https://github.com/opensearch-project/OpenSearch/pull/20017)) - Add circuit breaker support for gRPC transport to prevent out-of-memory errors ([#20203](https://github.com/opensearch-project/OpenSearch/pull/20203)) - Add index-level-encryption support for snapshots and remote-store ([#20095](https://github.com/opensearch-project/OpenSearch/pull/20095)) - Adding BackWardCompatibility test for remote publication enabled cluster ([#20221](https://github.com/opensearch-project/OpenSearch/pull/20221)) - Support for hll field mapper to support cardinality rollups ([#20129](https://github.com/opensearch-project/OpenSearch/pull/20129)) - Add tracing support for StreamingRestChannel ([#20361](https://github.com/opensearch-project/OpenSearch/pull/20361)) - Introduce new libs/netty4 module to share common implementation between netty-based plugins and modules (transport-netty4, transport-reactor-netty4) ([#20447](https://github.com/opensearch-project/OpenSearch/pull/20447)) - Add validation to make crypto store settings immutable ([#20123](https://github.com/opensearch-project/OpenSearch/pull/20123)) - Introduce concurrent translog recovery to accelerate segment replication primary promotion ([#20251](https://github.com/opensearch-project/OpenSearch/pull/20251)) - Update to `almalinux:10` ([#20482](https://github.com/opensearch-project/OpenSearch/pull/20482)) - Add X-Request-Id to uniquely identify a search request ([#19798](https://github.com/opensearch-project/OpenSearch/pull/19798)) - Added TopN selection logic for streaming terms aggregations ([#20481](https://github.com/opensearch-project/OpenSearch/pull/20481)) - Added support for Intra Segment Search ([#19704](https://github.com/opensearch-project/OpenSearch/pull/19704)) - Introduce AdditionalCodecs and EnginePlugin::getAdditionalCodecs hook to allow additional Codec registration ([#20411](https://github.com/opensearch-project/OpenSearch/pull/20411)) ###### Changed - Handle custom metadata files in subdirectory-store ([#20157](https://github.com/opensearch-project/OpenSearch/pull/20157)) - Add support for missing proto fields in GRPC FunctionScore and Highlight ([#20169](https://github.com/opensearch-project/OpenSearch/pull/20169)) - Ensure all modules are included in INTEG_TEST testcluster distribution ([#20241](https://github.com/opensearch-project/OpenSearch/pull/20241)) - Cleanup HttpServerTransport.Dispatcher in Netty tests ([#20160](https://github.com/opensearch-project/OpenSearch/pull/20160)) - Use compact object headers with JDK25+ ([#20392](https://github.com/opensearch-project/OpenSearch/pull/20392)) - Add `cluster.initial_cluster_manager_nodes` to testClusters OVERRIDABLE_SETTINGS ([#20348](https://github.com/opensearch-project/OpenSearch/pull/20348)) - Add BigInteger support for unsigned_long fields in gRPC transport ([#20346](https://github.com/opensearch-project/OpenSearch/pul _[Truncated at 4000 characters — full notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.5.0]_ ### 3.4.0 - Date: 2025-12-17 - Version: 3.4.0 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.4.0 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.4.0 - **added** — Allow setting index.creation_date on index creation and restore for plugin compatibility and migrations - **added** — Add support for a ForkJoinPool type - **added** — Add separate shard limit validation for local and remote indices - **added** — Use Lucene pack method for half_float and unsigned_long when using ApproximatePointRangeQuery - **added** — New cluster setting search.query.max_query_string_length_monitor_only - **added** — Add a mapper for context aware segments grouping criteria - **added** — Return full error for GRPC error response - **added** — Add support for repository with Server side encryption enabled and client side encryption as well based on a flag - **added** — Add pluggable gRPC interceptors with explicit ordering - **added** — Add BindableServices extension point to transport-grpc-spi - **added** — Add metrics for the merged segment warmer feature - **added** — Handle deleted documents for filter rewrite sub-aggregation optimization - **added** — Add bulk collect API for filter rewrite sub-aggregation optimization - **added** — Allow collectors take advantage of preaggregated data using collectRange API - **added** — Bulk collection logic for metrics and cardinality aggregations - **added** — Add pointer based lag metric in pull-based ingestion - **added** — Introduce internal API for retrieving metadata about requested indices from transport actions - **added** — Add cluster defaults for merge autoThrottle, maxMergeThreads, and maxMergeCount; add segment size filter to the merged segment warmer - **added** — Add build-tooling to run in FIPS environment - **added** — Add SMILE/CBOR/YAML document format support to Bulk GRPC endpoint - **changed** — Combining filter rewrite and skip list to optimize sub aggregation ##### Version 3.4.0 Release Notes Compatible with OpenSearch and OpenSearch Dashboards version 3.4.0 ###### Added - Allow setting index.creation_date on index creation and restore for plugin compatibility and migrations ([#19931](https://github.com/opensearch-project/OpenSearch/pull/19931)) - Add support for a ForkJoinPool type ([#19008](https://github.com/opensearch-project/OpenSearch/pull/19008)) - Add seperate shard limit validation for local and remote indices ([#19532](https://github.com/opensearch-project/OpenSearch/pull/19532)) - Use Lucene `pack` method for `half_float` and `unsigned_long` when using `ApproximatePointRangeQuery` ([#19553](https://github.com/opensearch-project/OpenSearch/pull/19553)) - New cluster setting search.query.max_query_string_length_monitor_only ([#19539](https://github.com/opensearch-project/OpenSearch/pull/19539)) - Add a mapper for context aware segments grouping criteria ([#19233](https://github.com/opensearch-project/OpenSearch/pull/19233)) - Return full error for GRPC error response ([#19568](https://github.com/opensearch-project/OpenSearch/pull/19568)) - Add support for repository with Server side encryption enabled and client side encryption as well based on a flag ([#19630](https://github.com/opensearch-project/OpenSearch/pull/19630)) - Add pluggable gRPC interceptors with explicit ordering([#19005](https://github.com/opensearch-project/OpenSearch/pull/19005)) - Add BindableServices extension point to transport-grpc-spi ([#19304](https://github.com/opensearch-project/OpenSearch/pull/19304)) - Add metrics for the merged segment warmer feature ([#18929](https://github.com/opensearch-project/OpenSearch/pull/18929)) - Handle deleted documents for filter rewrite sub-aggregation optimization ([#19643](https://github.com/opensearch-project/OpenSearch/pull/19643)) - Add bulk collect API for filter rewrite sub-aggregation optimization ([#19933](https://github.com/opensearch-project/OpenSearch/pull/19933)) - Allow collectors take advantage of preaggregated data using collectRange API ([#20009](https://github.com/opensearch-project/OpenSearch/pull/20009)) - Bulk collection logic for metrics and cardinality aggregations ([#20067](https://github.com/opensearch-project/OpenSearch/pull/20067)) - Add pointer based lag metric in pull-based ingestion ([#19635](https://github.com/opensearch-project/OpenSearch/pull/19635)) - Introduced internal API for retrieving metadata about requested indices from transport actions ([#18523](https://github.com/opensearch-project/OpenSearch/pull/18523)) - Add cluster defaults for merge autoThrottle, maxMergeThreads, and maxMergeCount; Add segment size filter to the merged segment warmer ([#19629](https://github.com/opensearch-project/OpenSearch/pull/19629)) - Add build-tooling to run in FIPS environment ([#18921](https://github.com/opensearch-project/OpenSearch/pull/18921)) - Add SMILE/CBOR/YAML document format support to Bulk GRPC endpoint ([#19744](https://github.com/opensearch-project/OpenSearch/pull/19744)) - Make test-suite runnable under FIPS compliance support ([#18491](https://github.com/opensearch-project/OpenSearch/pull/18491)) - Implement GRPC Search params `Highlight`and `Sort` ([#19868](https://github.com/opensearch-project/OpenSearch/pull/19868)) - Implement GRPC ConstantScoreQuery, FuzzyQuery, MatchBoolPrefixQuery, MatchPhrasePrefix, PrefixQuery, MatchQuery ([#19854](https://github.com/opensearch-project/OpenSearch/pull/19854)) - Add async periodic flush task support for pull-based ingestion ([#19878](https://github.com/opensearch-project/OpenSearch/pull/19878)) - Add support for context aware segments ([#19098](https://github.com/opensearch-project/OpenSearch/pull/19098)) - Implement GRPC FunctionScoreQuery ([#19888](https://github.com/opensearch-project/OpenSearch/pull/19888)) - Implement error_trace parameter for bulk requests ([#19985](https://github.com/opensearch-project/OpenSearch/pull/19985)) - Allow the truncate filter in normalizers ([#19778]( _[Truncated at 4000 characters — full notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.4.0]_ ### 3.3.2 - Date: 2025-10-30 - Version: 3.3.2 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.3.2 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.3.2 - **fixed** — Fix sub-aggregator casting for search with profile=true in Star Tree - **fixed** — Allow JRT protocol URLs in protection domain extraction for Java Agent - **fixed** — Fix bwc @timestamp upgrade issue by adding a version check on skip_list param - **fixed** — Fix issue with updating core with a patch number other than 0 - **fixed** — Fix IndexOutOfBoundsException when running include/exclude on non-existent prefix in terms aggregations - **fixed** — Add S3Repository.LEGACY_MD5_CHECKSUM_CALCULATION to list of repository-s3 settings ##### Version 3.3.2 Release Notes Compatible with OpenSearch 3.3.2 and OpenSearch Dashboards 3.3.0 ###### Fixed * [Star Tree] Fix sub-aggregator casting for search with profile=true ([#19652](https://github.com/opensearch-project/OpenSearch/pull/19652)) * [Java Agent] Allow JRT protocol URLs in protection domain extraction ([#19683](https://github.com/opensearch-project/OpenSearch/pull/19683)) * Fix bwc @timestamp upgrade issue by adding a version check on skip_list param ([#19671](https://github.com/opensearch-project/OpenSearch/pull/19671)) * Fix issue with updating core with a patch number other than 0 ([#19377](https://github.com/opensearch-project/OpenSearch/pull/19377)) * Fix IndexOutOfBoundsException when running include/exclude on non-existent prefix in terms aggregations ([#19637](https://github.com/opensearch-project/OpenSearch/pull/19637)) * Add S3Repository.LEGACY_MD5_CHECKSUM_CALCULATION to list of repository-s3 settings ([#19789](https://github.com/opensearch-project/OpenSearch/pull/19789)) ###### Dependencies * Bump ch.qos.logback modules from 1.5.18 to 1.5.20 in HDFS test fixture ([#19764](https://github.com/opensearch-project/OpenSearch/pull/19764)) * Bump org.bouncycastle:bc-fips from 2.1.1 to 2.1.2 ([#19817](https://github.com/opensearch-project/OpenSearch/pull/19817)) ### 3.3.1 - Date: 2025-10-22 - Version: 3.3.1 - Original notes: https://github.com/opensearch-project/OpenSearch/releases/tag/3.3.1 - Permalink: https://whatsnew.fyi/product/opensearch/releases/3.3.1 - **fixed** — Fix issue with updating core with a patch number other than 0 - **fixed** — Fix sub-aggregator casting for search with profile=true - **fixed** — Fix bwc @timestamp upgrade issue by adding a version check on skip_list param ##### Version 3.3.1 Release Notes OpenSearch 3.3.1 Only. ###### Fixed * Fix issue with updating core with a patch number other than 0 ([#19377](https://github.com/opensearch-project/OpenSearch/pull/19377)) * [Star Tree] Fix sub-aggregator casting for search with profile=true ([#19652](https://github.com/opensearch-project/OpenSearch/pull/19652)) * Fix bwc @timestamp upgrade issue by adding a version check on skip_list param ([#19671](https://github.com/opensearch-project/OpenSearch/pull/19671))