Class IndexSettings

java.lang.Object
org.elasticsearch.index.IndexSettings

public final class IndexSettings extends Object
This class encapsulates all index level settings and handles settings updates. It's created per index and available to all index level classes and allows them to retrieve the latest updated settings instance. Classes that need to listen to settings updates can register a settings consumer at index creation via IndexModule.addSettingsUpdateConsumer(Setting, Consumer) that will be called for each settings update.
  • Field Details

    • DEFAULT_FIELD_SETTING

      public static final Setting<List<String>> DEFAULT_FIELD_SETTING
    • QUERY_STRING_LENIENT_SETTING

      public static final Setting<Boolean> QUERY_STRING_LENIENT_SETTING
    • QUERY_STRING_ANALYZE_WILDCARD

      public static final Setting<Boolean> QUERY_STRING_ANALYZE_WILDCARD
    • QUERY_STRING_ALLOW_LEADING_WILDCARD

      public static final Setting<Boolean> QUERY_STRING_ALLOW_LEADING_WILDCARD
    • ALLOW_UNMAPPED

      public static final Setting<Boolean> ALLOW_UNMAPPED
    • INDEX_TRANSLOG_SYNC_INTERVAL_SETTING

      public static final Setting<org.elasticsearch.core.TimeValue> INDEX_TRANSLOG_SYNC_INTERVAL_SETTING
    • INDEX_SEARCH_IDLE_AFTER

      public static final Setting<org.elasticsearch.core.TimeValue> INDEX_SEARCH_IDLE_AFTER
    • INDEX_TRANSLOG_DURABILITY_SETTING

      public static final Setting<Translog.Durability> INDEX_TRANSLOG_DURABILITY_SETTING
    • INDEX_WARMER_ENABLED_SETTING

      public static final Setting<Boolean> INDEX_WARMER_ENABLED_SETTING
    • INDEX_CHECK_ON_STARTUP

      public static final Setting<String> INDEX_CHECK_ON_STARTUP
    • MAX_RESULT_WINDOW_SETTING

      public static final Setting<Integer> MAX_RESULT_WINDOW_SETTING
      Index setting describing the maximum value of from + size on a query. The Default maximum value of from + size on a query is 10,000. This was chosen as a conservative default as it is sure to not cause trouble. Users can certainly profile their cluster and decide to set it to 100,000 safely. 1,000,000 is probably way to high for any cluster to set safely.
    • MAX_INNER_RESULT_WINDOW_SETTING

      public static final Setting<Integer> MAX_INNER_RESULT_WINDOW_SETTING
      Index setting describing the maximum value of from + size on an individual inner hit definition or top hits aggregation. The default maximum of 100 is defensive for the reason that the number of inner hit responses and number of top hits buckets returned is unbounded. Profile your cluster when increasing this setting.
    • MAX_SCRIPT_FIELDS_SETTING

      public static final Setting<Integer> MAX_SCRIPT_FIELDS_SETTING
      Index setting describing the maximum value of allowed `script_fields`that can be retrieved per search request. The default maximum of 32 is defensive for the reason that retrieving script fields is a costly operation.
    • MAX_TOKEN_COUNT_SETTING

      public static final Setting<Integer> MAX_TOKEN_COUNT_SETTING
      A setting describing the maximum number of tokens that can be produced using _analyze API. The default maximum of 10000 is defensive to prevent generating too many token objects.
    • MAX_ANALYZED_OFFSET_SETTING

      public static final Setting<Integer> MAX_ANALYZED_OFFSET_SETTING
      A setting describing the maximum number of characters that will be analyzed for a highlight request. This setting is only applicable when highlighting is requested on a text that was indexed without offsets or term vectors. The default maximum of 1M characters is defensive as for highlighting larger texts, indexing with offsets or term vectors is recommended.
    • MAX_TERMS_COUNT_SETTING

      public static final Setting<Integer> MAX_TERMS_COUNT_SETTING
      Index setting describing the maximum number of terms that can be used in Terms Query. The default maximum of 65536 terms is defensive, as extra processing and memory is involved for each additional term, and a large number of terms degrade the cluster performance.
    • MAX_NGRAM_DIFF_SETTING

      public static final Setting<Integer> MAX_NGRAM_DIFF_SETTING
      Index setting describing for NGramTokenizer and NGramTokenFilter the maximum difference between max_gram (maximum length of characters in a gram) and min_gram (minimum length of characters in a gram). The default value is 1 as this is default difference in NGramTokenizer, and is defensive as it prevents generating too many index terms.
    • MAX_SHINGLE_DIFF_SETTING

      public static final Setting<Integer> MAX_SHINGLE_DIFF_SETTING
      Index setting describing for ShingleTokenFilter the maximum difference between max_shingle_size and min_shingle_size. The default value is 3 is defensive as it prevents generating too many tokens.
    • MAX_DOCVALUE_FIELDS_SEARCH_SETTING

      public static final Setting<Integer> MAX_DOCVALUE_FIELDS_SEARCH_SETTING
      Index setting describing the maximum value of allowed `docvalue_fields`that can be retrieved per search request. The default maximum of 100 is defensive for the reason that retrieving doc values might incur a per-field per-document seek.
    • MAX_RESCORE_WINDOW_SETTING

      public static final Setting<Integer> MAX_RESCORE_WINDOW_SETTING
      Index setting describing the maximum size of the rescore window. Defaults to MAX_RESULT_WINDOW_SETTING because they both do the same thing: control the size of the heap of hits.
    • MAX_ADJACENCY_MATRIX_FILTERS_SETTING

      public static final Setting<Integer> MAX_ADJACENCY_MATRIX_FILTERS_SETTING
      Index setting describing the maximum number of filters clauses that can be used in an adjacency_matrix aggregation. The max number of buckets produced by N filters is (N*N)/2 so a limit of 100 filters is imposed by default.
    • DEFAULT_REFRESH_INTERVAL

      public static final org.elasticsearch.core.TimeValue DEFAULT_REFRESH_INTERVAL
    • INDEX_REFRESH_INTERVAL_SETTING

      public static final Setting<org.elasticsearch.core.TimeValue> INDEX_REFRESH_INTERVAL_SETTING
    • INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING

      public static final Setting<ByteSizeValue> INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING
    • INDEX_FLUSH_AFTER_MERGE_THRESHOLD_SIZE_SETTING

      public static final Setting<ByteSizeValue> INDEX_FLUSH_AFTER_MERGE_THRESHOLD_SIZE_SETTING
      The minimum size of a merge that triggers a flush in order to free resources
    • INDEX_TRANSLOG_GENERATION_THRESHOLD_SIZE_SETTING

      public static final Setting<ByteSizeValue> INDEX_TRANSLOG_GENERATION_THRESHOLD_SIZE_SETTING
      The maximum size of a translog generation. This is independent of the maximum size of translog operations that have not been flushed.
    • DEFAULT_GC_DELETES

      public static final org.elasticsearch.core.TimeValue DEFAULT_GC_DELETES
      Index setting to enable / disable deletes garbage collection. This setting is realtime updateable
    • INDEX_GC_DELETES_SETTING

      public static final Setting<org.elasticsearch.core.TimeValue> INDEX_GC_DELETES_SETTING
    • INDEX_SOFT_DELETES_SETTING

      public static final Setting<Boolean> INDEX_SOFT_DELETES_SETTING
      Specifies if the index should use soft-delete instead of hard-delete for update/delete operations. Soft-deletes is enabled by default for 7.0+ indices.
    • INDEX_SOFT_DELETES_RETENTION_OPERATIONS_SETTING

      public static final Setting<Long> INDEX_SOFT_DELETES_RETENTION_OPERATIONS_SETTING
      Controls how many soft-deleted documents will be kept around before being merged away. Keeping more deleted documents increases the chance of operation-based recoveries and allows querying a longer history of documents. If soft-deletes is enabled, an engine by default will retain all operations up to the global checkpoint.
    • INDEX_TRANSLOG_RETENTION_AGE_SETTING

      public static final Setting<org.elasticsearch.core.TimeValue> INDEX_TRANSLOG_RETENTION_AGE_SETTING
      Controls how long translog files that are no longer needed for persistence reasons will be kept around before being deleted. Keeping more files is useful to increase the chance of ops based recoveries for indices with soft-deletes disabled. This setting will be ignored if soft-deletes is used in peer recoveries (default in 7.4).
    • INDEX_TRANSLOG_RETENTION_SIZE_SETTING

      public static final Setting<ByteSizeValue> INDEX_TRANSLOG_RETENTION_SIZE_SETTING
      Controls how many translog files that are no longer needed for persistence reasons will be kept around before being deleted. Keeping more files is useful to increase the chance of ops based recoveries for indices with soft-deletes disabled. This setting will be ignored if soft-deletes is used in peer recoveries (default in 7.4).
    • INDEX_TRANSLOG_RETENTION_TOTAL_FILES_SETTING

      public static final Setting<Integer> INDEX_TRANSLOG_RETENTION_TOTAL_FILES_SETTING
      Controls the number of translog files that are no longer needed for persistence reasons will be kept around before being deleted. This is a safeguard making sure that the translog deletion policy won't keep too many translog files especially when they're small. This setting is intentionally not registered, it is only used in tests
    • INDEX_SOFT_DELETES_RETENTION_LEASE_PERIOD_SETTING

      public static final Setting<org.elasticsearch.core.TimeValue> INDEX_SOFT_DELETES_RETENTION_LEASE_PERIOD_SETTING
      Controls the maximum length of time since a retention lease is created or renewed before it is considered expired.
    • MAX_REFRESH_LISTENERS_PER_SHARD

      public static final Setting<Integer> MAX_REFRESH_LISTENERS_PER_SHARD
      The maximum number of refresh listeners allows on this shard.
    • MAX_SLICES_PER_SCROLL

      public static final Setting<Integer> MAX_SLICES_PER_SCROLL
      The maximum number of slices allowed in a scroll request
    • MAX_REGEX_LENGTH_SETTING

      public static final Setting<Integer> MAX_REGEX_LENGTH_SETTING
      The maximum length of regex string allowed in a regexp query.
    • DEFAULT_PIPELINE

      public static final Setting<String> DEFAULT_PIPELINE
    • FINAL_PIPELINE

      public static final Setting<String> FINAL_PIPELINE
    • INDEX_SEARCH_THROTTLED

      public static final Setting<Boolean> INDEX_SEARCH_THROTTLED
      Marks an index to be searched throttled. This means that never more than one shard of such an index will be searched concurrently
    • FILE_BASED_RECOVERY_THRESHOLD_SETTING

      public static final Setting<Double> FILE_BASED_RECOVERY_THRESHOLD_SETTING
      Determines a balance between file-based and operations-based peer recoveries. The number of operations that will be used in an operations-based peer recovery is limited to this proportion of the total number of documents in the shard (including deleted documents) on the grounds that a file-based peer recovery may copy all of the documents in the shard over to the new peer, but is significantly faster than replaying the missing operations on the peer, so once a peer falls far enough behind the primary it makes more sense to copy all the data over again instead of replaying history. Defaults to retaining history for up to 10% of the documents in the shard. This can only be changed in tests, since this setting is intentionally unregistered.
  • Constructor Details

    • IndexSettings

      public IndexSettings(IndexMetadata indexMetadata, Settings nodeSettings)
      Creates a new IndexSettings instance. The given node settings will be merged with the settings in the metadata while index level settings will overwrite node settings.
      Parameters:
      indexMetadata - the index metadata this settings object is associated with
      nodeSettings - the nodes settings this index is allocated on.
    • IndexSettings

      public IndexSettings(IndexMetadata indexMetadata, Settings nodeSettings, IndexScopedSettings indexScopedSettings)
      Creates a new IndexSettings instance. The given node settings will be merged with the settings in the metadata while index level settings will overwrite node settings.
      Parameters:
      indexMetadata - the index metadata this settings object is associated with
      nodeSettings - the nodes settings this index is allocated on.
  • Method Details

    • getRetentionLeaseMillis

      public long getRetentionLeaseMillis()
      The maximum age of a retention lease before it is considered expired.
      Returns:
      the maximum age
    • getDefaultFields

      public List<String> getDefaultFields()
      Returns the default search fields for this index.
    • isQueryStringLenient

      public boolean isQueryStringLenient()
      Returns true if query string parsing should be lenient. The default is false
    • isQueryStringAnalyzeWildcard

      public boolean isQueryStringAnalyzeWildcard()
      Returns true if the query string should analyze wildcards. The default is false
    • isQueryStringAllowLeadingWildcard

      public boolean isQueryStringAllowLeadingWildcard()
      Returns true if the query string parser should allow leading wildcards. The default is true
    • isDefaultAllowUnmappedFields

      public boolean isDefaultAllowUnmappedFields()
      Returns true if queries should be lenient about unmapped fields. The default is true
    • getSettings

      public Settings getSettings()
      Returns the settings for this index. These settings contain the node and index level settings where settings that are specified on both index and node level are overwritten by the index settings.
    • getIndex

      public Index getIndex()
      Returns the index this settings object belongs to
    • getUUID

      public String getUUID()
      Returns the indexes UUID
    • hasCustomDataPath

      public boolean hasCustomDataPath()
      Returns true if the index has a custom data path
    • customDataPath

      public String customDataPath()
      Returns the customDataPath for this index, if configured. "" o.w.
    • getIndexVersionCreated

      public Version getIndexVersionCreated()
      Returns the version the index was created on.
      See Also:
      IndexMetadata.SETTING_VERSION_CREATED
    • getNodeName

      public String getNodeName()
      Returns the current node name
    • getIndexMetadata

      public IndexMetadata getIndexMetadata()
      Returns the current IndexMetadata for this index
    • getNumberOfShards

      public int getNumberOfShards()
      Returns the number of shards this index has.
    • getNumberOfReplicas

      public int getNumberOfReplicas()
      Returns the number of replicas this index has.
    • getNodeSettings

      public Settings getNodeSettings()
      Returns the node settings. The settings returned from getSettings() are a merged version of the index settings and the node settings where node settings are overwritten by index settings.
    • updateIndexMetadata

      public boolean updateIndexMetadata(IndexMetadata indexMetadata)
      Updates the settings and index metadata and notifies all registered settings consumers with the new settings iff at least one setting has changed.
      Returns:
      true iff any setting has been updated otherwise false.
    • same

      public static boolean same(Settings left, Settings right)
      Compare the specified settings for equality.
      Parameters:
      left - the left settings
      right - the right settings
      Returns:
      true if the settings are the same, otherwise false
    • getTranslogDurability

      public Translog.Durability getTranslogDurability()
      Returns the translog durability for this index.
    • isWarmerEnabled

      public boolean isWarmerEnabled()
      Returns true if index warmers are enabled, otherwise false
    • getTranslogSyncInterval

      public org.elasticsearch.core.TimeValue getTranslogSyncInterval()
      Returns the translog sync interval. This is the interval in which the transaction log is asynchronously fsynced unless the transaction log is fsyncing on every operations
    • setTranslogSyncInterval

      public void setTranslogSyncInterval(org.elasticsearch.core.TimeValue translogSyncInterval)
    • getRefreshInterval

      public org.elasticsearch.core.TimeValue getRefreshInterval()
      Returns this interval in which the shards of this index are asynchronously refreshed. -1 means async refresh is disabled.
    • getFlushThresholdSize

      public ByteSizeValue getFlushThresholdSize()
      Returns the transaction log threshold size when to forcefully flush the index and clear the transaction log.
    • getFlushAfterMergeThresholdSize

      public ByteSizeValue getFlushAfterMergeThresholdSize()
      Returns the merge threshold size when to forcefully flush the index and free resources.
    • getTranslogRetentionSize

      public ByteSizeValue getTranslogRetentionSize()
      Returns the transaction log retention size which controls how much of the translog is kept around to allow for ops based recoveries
    • getTranslogRetentionAge

      public org.elasticsearch.core.TimeValue getTranslogRetentionAge()
      Returns the transaction log retention age which controls the maximum age (time from creation) that translog files will be kept around
    • getTranslogRetentionTotalFiles

      public int getTranslogRetentionTotalFiles()
      Returns the maximum number of translog files that that no longer required for persistence should be kept for peer recovery when soft-deletes is disabled.
    • getGenerationThresholdSize

      public ByteSizeValue getGenerationThresholdSize()
      Returns the generation threshold size. As sequence numbers can cause multiple generations to be preserved for rollback purposes, we want to keep the size of individual generations from growing too large to avoid excessive disk space consumption. Therefore, the translog is automatically rolled to a new generation when the current generation exceeds this generation threshold size.
      Returns:
      the generation threshold size
    • getMergeSchedulerConfig

      public MergeSchedulerConfig getMergeSchedulerConfig()
    • getMaxResultWindow

      public int getMaxResultWindow()
      Returns the max result window for search requests, describing the maximum value of from + size on a query.
    • getMaxInnerResultWindow

      public int getMaxInnerResultWindow()
      Returns the max result window for an individual inner hit definition or top hits aggregation.
    • getMaxAdjacencyMatrixFilters

      @Deprecated public int getMaxAdjacencyMatrixFilters()
      Deprecated.
      This setting will be removed in 8.0
      Returns the max number of filters in adjacency_matrix aggregation search requests
    • getMaxRescoreWindow

      public int getMaxRescoreWindow()
      Returns the maximum rescore window for search requests.
    • getMaxDocvalueFields

      public int getMaxDocvalueFields()
      Returns the maximum number of allowed docvalue_fields to retrieve in a search request
    • getMaxTokenCount

      public int getMaxTokenCount()
      Returns the maximum number of tokens that can be produced
    • getMaxNgramDiff

      public int getMaxNgramDiff()
      Returns the maximum allowed difference between max and min length of ngram
    • getMaxShingleDiff

      public int getMaxShingleDiff()
      Returns the maximum allowed difference between max and min shingle_size
    • getHighlightMaxAnalyzedOffset

      public int getHighlightMaxAnalyzedOffset()
      Returns the maximum number of chars that will be analyzed in a highlight request
    • getMaxTermsCount

      public int getMaxTermsCount()
      Returns the maximum number of terms that can be used in a Terms Query request
    • getMaxScriptFields

      public int getMaxScriptFields()
      Returns the maximum number of allowed script_fields to retrieve in a search request
    • getGcDeletesInMillis

      public long getGcDeletesInMillis()
      Returns the GC deletes cycle in milliseconds.
    • getMergePolicy

      public org.apache.lucene.index.MergePolicy getMergePolicy()
      Returns the merge policy that should be used for this index.
    • getValue

      public <T> T getValue(Setting<T> setting)
    • getMaxRefreshListeners

      public int getMaxRefreshListeners()
      The maximum number of refresh listeners allows on this shard.
    • getMaxSlicesPerScroll

      public int getMaxSlicesPerScroll()
      The maximum number of slices allowed in a scroll request.
    • getMaxRegexLength

      public int getMaxRegexLength()
      The maximum length of regex string allowed in a regexp query.
    • getIndexSortConfig

      public IndexSortConfig getIndexSortConfig()
      Returns the index sort config that should be used for this index.
    • getScopedSettings

      public IndexScopedSettings getScopedSettings()
    • isExplicitRefresh

      public boolean isExplicitRefresh()
      Returns true iff the refresh setting exists or in other words is explicitly set.
    • getSearchIdleAfter

      public org.elasticsearch.core.TimeValue getSearchIdleAfter()
      Returns the time that an index shard becomes search idle unless it's accessed in between
    • getDefaultPipeline

      public String getDefaultPipeline()
    • setDefaultPipeline

      public void setDefaultPipeline(String defaultPipeline)
    • getRequiredPipeline

      public String getRequiredPipeline()
    • setRequiredPipeline

      public void setRequiredPipeline(String requiredPipeline)
    • isSoftDeleteEnabled

      public boolean isSoftDeleteEnabled()
      Returns true if soft-delete is enabled.
    • getSoftDeleteRetentionOperations

      public long getSoftDeleteRetentionOperations()
      Returns the number of extra operations (i.e. soft-deleted documents) to be kept for recoveries and history purpose.
    • isSearchThrottled

      public boolean isSearchThrottled()
      Returns true if the this index should be searched throttled ie. using the ThreadPool.Names.SEARCH_THROTTLED thread-pool
    • getMappingNestedFieldsLimit

      public long getMappingNestedFieldsLimit()
    • getMappingNestedDocsLimit

      public long getMappingNestedDocsLimit()
    • getMappingTotalFieldsLimit

      public long getMappingTotalFieldsLimit()
    • getMappingDepthLimit

      public long getMappingDepthLimit()
    • getMappingFieldNameLengthLimit

      public long getMappingFieldNameLengthLimit()