Class IndexSettings


  • public final class IndexSettings
    extends java.lang.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 Detail

      • DEFAULT_FIELD_SETTING_KEY

        public static final java.lang.String DEFAULT_FIELD_SETTING_KEY
        See Also:
        Constant Field Values
      • DEFAULT_FIELD_SETTING

        public static final Setting<java.util.List<java.lang.String>> DEFAULT_FIELD_SETTING
      • QUERY_STRING_LENIENT_SETTING

        public static final Setting<java.lang.Boolean> QUERY_STRING_LENIENT_SETTING
      • QUERY_STRING_ANALYZE_WILDCARD

        public static final Setting<java.lang.Boolean> QUERY_STRING_ANALYZE_WILDCARD
      • QUERY_STRING_ALLOW_LEADING_WILDCARD

        public static final Setting<java.lang.Boolean> QUERY_STRING_ALLOW_LEADING_WILDCARD
      • ALLOW_UNMAPPED

        public static final Setting<java.lang.Boolean> ALLOW_UNMAPPED
      • INDEX_TRANSLOG_SYNC_INTERVAL_SETTING

        public static final Setting<TimeValue> INDEX_TRANSLOG_SYNC_INTERVAL_SETTING
      • INDEX_WARMER_ENABLED_SETTING

        public static final Setting<java.lang.Boolean> INDEX_WARMER_ENABLED_SETTING
      • INDEX_TTL_DISABLE_PURGE_SETTING

        @Deprecated
        public static final Setting<java.lang.Boolean> INDEX_TTL_DISABLE_PURGE_SETTING
        Deprecated.
      • INDEX_CHECK_ON_STARTUP

        public static final Setting<java.lang.String> INDEX_CHECK_ON_STARTUP
      • MAX_RESULT_WINDOW_SETTING

        public static final Setting<java.lang.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_SCRIPT_FIELDS_SETTING

        public static final Setting<java.lang.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_INNER_RESULT_WINDOW_SETTING

        public static final Setting<java.lang.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_ANALYZED_OFFSET_SETTING

        public static final Setting<java.lang.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. This setting is defensive as for highlighting larger texts, indexing with offsets or term vectors is recommended. For 6.x the default value is not set or equals to -1.
      • MAX_TERMS_COUNT_SETTING

        public static final Setting<java.lang.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<java.lang.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<java.lang.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<java.lang.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<java.lang.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<java.lang.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 TimeValue DEFAULT_REFRESH_INTERVAL
      • INDEX_REFRESH_INTERVAL_SETTING

        public static final Setting<TimeValue> INDEX_REFRESH_INTERVAL_SETTING
      • INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING

        public static final Setting<ByteSizeValue> INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING
      • INDEX_TRANSLOG_RETENTION_AGE_SETTING

        public static final Setting<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. A longer retention policy is useful to increase the chance of ops based recoveries.
      • 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.
      • INDEX_TRANSLOG_RETENTION_TOTAL_FILES_SETTING

        public static final Setting<java.lang.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_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 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<TimeValue> INDEX_GC_DELETES_SETTING
      • INDEX_SOFT_DELETES_SETTING

        public static final Setting<java.lang.Boolean> INDEX_SOFT_DELETES_SETTING
        Specifies if the index should use soft-delete instead of hard-delete for update/delete operations.
      • INDEX_SOFT_DELETES_RETENTION_OPERATIONS_SETTING

        public static final Setting<java.lang.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_SOFT_DELETES_RETENTION_LEASE_PERIOD_SETTING

        public static final Setting<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<java.lang.Integer> MAX_REFRESH_LISTENERS_PER_SHARD
        The maximum number of refresh listeners allows on this shard.
      • MAX_SLICES_PER_SCROLL

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

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

        public static final java.lang.String INDEX_MAPPING_SINGLE_TYPE_SETTING_KEY
        See Also:
        Constant Field Values
      • DEFAULT_PIPELINE

        public static final Setting<java.lang.String> DEFAULT_PIPELINE
      • INDEX_SEARCH_THROTTLED

        public static final Setting<java.lang.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
    • Constructor Detail

      • 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 Detail

      • getRetentionLeaseMillis

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

        public java.util.List<java.lang.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 java.lang.String getUUID()
        Returns the indexes UUID
      • hasCustomDataPath

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

        public java.lang.String customDataPath()
        Returns the customDataPath for this index, if configured. null o.w.
      • getNodeName

        public java.lang.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.
      • isSingleType

        public boolean isSingleType()
        Returns whether the index enforces at most one type.
      • 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 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
      • getRefreshInterval

        public 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.
      • 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 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
      • 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

        public int getMaxAdjacencyMatrixFilters()
        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
      • 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.
      • getDefaultPipeline

        public java.lang.String getDefaultPipeline()
      • setDefaultPipeline

        public void setDefaultPipeline​(java.lang.String defaultPipeline)
      • 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