Cluster settings for indexes
The following cluster settings apply to all indexes in the cluster. For settings that apply to individual indexes, see Index settings.
To learn how to apply these settings, see Configuring OpenSearch.
Static settings
OpenSearch supports the following static cluster settings for indexes:
-
indices.cache.cleanup_interval(Static, time unit): Schedules a recurring background task that cleans up expired entries from the cache at the specified interval. Default is1m(1 minute). For more information, see Index request cache. -
indices.requests.cache.size(Static, string): The cache size as a percentage of the heap size (for example, to use 1% of the heap, specify1%). Default is1%. For more information, see Index request cache. -
indices.analysis.hunspell.dictionary.ignore_case(Static, Boolean): Controls whether Hunspell dictionary matching ignores case globally for all locales. When enabled, dictionary matching becomes case insensitive. This setting can be configured at multiple levels: node level (this setting), per-locale usingindices.analysis.hunspell.dictionary.<locale>.ignore_case(for example,indices.analysis.hunspell.dictionary.en_US.ignore_case), or in dictionary-specificsettings.ymlfiles within each dictionary directory. Per-locale and dictionary-specific settings override the global setting. Default isfalse. -
indices.analysis.hunspell.dictionary.lazy(Static, Boolean): Controls when Hunspell dictionaries are loaded. Iftrue, dictionary loading is deferred until a dictionary is actually used, reducing startup time but potentially increasing latency on first use. Iffalse, the dictionary directory is checked and all dictionaries are automatically loaded when the node starts. Default isfalse. -
indices.analysis.hunspell.dictionary.<locale>.strict_affix_parsing(Static, Boolean): Controls whether errors encountered while reading Hunspell affix rules files cause exceptions or are silently ignored. When set totrue, parsing errors in affix files will throw exceptions and prevent dictionary loading. When set tofalse, parsing errors are ignored and the dictionary continues to load. This setting can be configured per locale by replacing<locale>with the specific locale code (for example,indices.analysis.hunspell.dictionary.en_US.strict_affix_parsing). Default istrue. -
indices.memory.index_buffer_size(Static, string): Controls the amount of heap memory allocated for indexing operations across all shards on a node. Accepts either a percentage (like10%) or a byte size value (like512mb). This buffer is shared across all shards and is used to batch indexing operations before writing to disk. Default is10%of the total heap. -
indices.memory.min_index_buffer_size(Static, byte unit): Sets the absolute minimum size for the indexing buffer whenindices.memory.index_buffer_sizeis specified as a percentage. This ensures the indexing buffer never becomes too small on nodes with limited heap memory. Default is48mb. -
indices.memory.max_index_buffer_size(Static, byte unit): Sets the absolute maximum size for the indexing buffer whenindices.memory.index_buffer_sizeis specified as a percentage. This prevents the indexing buffer from consuming too much memory on nodes with large heaps. Default is unbounded (no limit). -
indices.queries.cache.size(Static, string): Controls the memory size allocated for the query cache (filter cache) on each data node. The query cache stores the results of frequently used filters to improve search performance. Accepts either a percentage value (like5%) or an exact byte value (like512mb). Default is10%of heap memory. -
indices.queries.cache.all_segments(Static, Boolean): Whether to cache queries across all segments or only frequently accessed ones. -
indices.queries.cache.count(Static, integer): The maximum number of queries to cache. -
index.store.hybrid.nio.extensions(Static, list): Expert setting. Lucene file extensions to load with NIO instead of memory mapping. Default includes common extensions likesegments_N,write.lock,si, andcfe. -
indexing_pressure.memory.limit(Static, byte size): Controls the memory limit for indexing operations to prevent memory exhaustion during heavy indexing workloads. When indexing operations exceed this threshold, they may be rejected or throttled to protect cluster stability. Accepts percentage values (like10%of heap) or byte size values (like512mb). Default is10%of the total heap memory. -
indices.query.query_string.allowLeadingWildcard(Static, Boolean): Controls whether leading wildcards are allowed in query string queries. When enabled, queries like*termor?termare permitted but may impact performance as they require scanning all terms in the index. When disabled, leading wildcard queries are rejected to improve query performance. Default istrue. -
indices.query.query_string.analyze_wildcard(Static, Boolean): Controls whether wildcard terms in query string queries are analyzed using the configured analyzer. When enabled, wildcard queries undergo analysis (tokenization, filtering) which can improve matching but may affect performance. When disabled, wildcard terms are used as-is without analysis. Default isfalse. -
indices.time_series_index.default_index_merge_policy(Static, string): Sets the default merge policy for time series indices across the cluster. This setting controls how Lucene segments are merged for time-series data, which can significantly impact indexing performance and storage efficiency. Valid values includedefault,tiered, andlog_byte_size. Default isdefault. -
cluster.remote_store.translog.path.prefix(Static, string): Controls the fixed path prefix for translog data on a remote-store-enabled cluster. This setting only applies when thecluster.remote_store.index.path.typesetting is eitherHASHED_PREFIXorHASHED_INFIX. Default is an empty string,"". -
cluster.remote_store.segments.path.prefix(Static, string): Controls the fixed path prefix for segment data on a remote-store-enabled cluster. This setting only applies when thecluster.remote_store.index.path.typesetting is eitherHASHED_PREFIXorHASHED_INFIX. Default is an empty string,"". -
cluster.snapshot.shard.path.prefix(Static, string): Controls the fixed path prefix for snapshot shard-level blobs. This setting only applies when the repositoryshard_path_typesetting is eitherHASHED_PREFIXorHASHED_INFIX. Default is an empty string,"".
Dynamic settings
OpenSearch supports the following dynamic cluster settings for indexes:
-
action.auto_create_index(Dynamic, Boolean): Automatically creates an index if the index doesn’t already exist. Also applies any index templates that are configured. Default istrue. -
action.destructive_requires_name(Dynamic, Boolean): Whentrue, you must specify the index name to delete an index. You cannot delete all indexes or use wildcards. Default isfalse. -
cluster.default.index.refresh_interval(Dynamic, time unit): Sets the refresh interval when theindex.refresh_intervalsetting is not provided. This setting can be useful when you want to set a default refresh interval across all indexes in a cluster and support thesearchIdlesetting. You cannot set the interval lower than thecluster.minimum.index.refresh_intervalsetting. -
cluster.minimum.index.refresh_interval(Dynamic, time unit): Sets the minimum refresh interval and applies it to all indexes in the cluster. Thecluster.default.index.refresh_intervalsetting should be higher than this setting’s value. If, during index creation, theindex.refresh_intervalsetting is lower than the minimum set, index creation fails. -
cluster.indices.close.enable(Dynamic, Boolean): Enables closing of open indexes in OpenSearch. Default istrue. -
indices.recovery.max_bytes_per_sec(Dynamic, string): Limits the total inbound and outbound recovery traffic for each node. This applies to peer recoveries and snapshot recoveries. Default is40mb. If you set the recovery traffic value to less than or equal to0mb, rate limiting will be disabled, which causes recovery data to be transferred at the highest possible rate. -
indices.recovery.max_concurrent_file_chunks(Dynamic, integer): The number of file chunks sent in parallel for each recovery operation. Default is2. -
indices.recovery.max_concurrent_operations(Dynamic, integer): The number of operations sent in parallel for each recovery. Default is1. -
indices.recovery.max_concurrent_remote_store_streams(Dynamic, integer): The number of streams to the remote repository that can be opened in parallel when recovering a remote store index. Default is20. -
indices.replication.max_bytes_per_sec(Dynamic, string): Limits the total inbound and outbound replication traffic for each node. If a value is not specified in the configured value theindices.recovery.max_bytes_per_secsetting is used, which defaults to 40 Mb. If you set the replication traffic value to less than or equal to 0 Mb, rate limiting is disabled, which causes replication data to be transferred at the highest possible rate. -
indices.fielddata.cache.size(Dynamic, string): The maximum size of the field data cache. May be specified as an absolute value (for example,8GB) or a percentage of the node heap (for example,50%). This setting is dynamic. If you don’t specify this setting, the maximum size is35%. This value should be smaller than theindices.breaker.fielddata.limit. For more information, see Field data circuit breaker. -
indices.query.bool.max_clause_count(Dynamic, integer): Defines the maximum product of fields and terms that can be searched simultaneously. Before OpenSearch 2.16, a cluster restart was required in order to apply this static setting. Now dynamic, existing search thread pools may use the old static value initially, causingTooManyClausesexceptions. New thread pools use the updated value. Default is1024. cluster.remote_store.index.path.type(Dynamic, string): The path strategy for the data stored in the remote store. This setting is effective only for remote-store-enabled clusters. This setting supports the following values:fixed: Stores the data in path structure<repository_base_path>/<index_uuid>/<shard_id>/.hashed_prefix: Stores the data in path structurehash(<shard-data-idenitifer>)/<repository_base_path>/<index_uuid>/<shard_id>/.hashed_infix: Stores the data in path structure<repository_base_path>/hash(<shard-data-idenitifer>)/<index_uuid>/<shard_id>/.shard-data-idenitiferis characterized by the index_uuid, shard_id, kind of data (translog, segments), and type of data (data, metadata, lock_files). Default isfixed.
cluster.remote_store.index.path.hash_algorithm(Dynamic, string): The hash function used to derive the hash value whencluster.remote_store.index.path.typeis set tohashed_prefixorhashed_infix. This setting is effective only for remote-store-enabled clusters. This setting supports the following values:fnv_1a_base64: Uses the FNV1a hash function and generates a url-safe 20-bit Base64-encoded hash value.fnv_1a_composite_1: Uses the FNV1a hash function and generates a custom encoded hash value that scales well with most remote store options. The FNV1a function generates 64-bit value. The custom encoding uses the most significant 6 bits to create a URL-safe Base64 character and the next 14 bits to create a binary string. Default isfnv_1a_composite_1.
-
cluster.remote_store.translog.transfer_timeout(Dynamic, time unit): Controls the timeout value while uploading translog and checkpoint files during a sync to the remote store. This setting is applicable only for remote-store-enabled clusters. Default is30s. -
cluster.remote_store.index.segment_metadata.retention.max_count(Dynamic, integer): Controls the minimum number of metadata files to keep in the segment repository on a remote store. A value below1disables the deletion of stale segment metadata files. Default is10. -
cluster.remote_store.segment.transfer_timeout(Dynamic, time unit): Controls the maximum amount of time to wait for all new segments to update after refresh to the remote store. If the upload does not complete within a specified amount of time, it throws aSegmentUploadFailedExceptionerror. Default is30m. It has a minimum constraint of10m. cluster.default_number_of_replicas(Dynamic, integer): Controls the default number of replicas for indexes in the cluster. The index-levelindex.number_of_replicassetting defaults to this value if not configured. Default is1.