Class IndexMetadata

java.lang.Object
org.elasticsearch.cluster.metadata.IndexMetadata
All Implemented Interfaces:
Diffable<IndexMetadata>, Writeable, org.elasticsearch.common.xcontent.ToXContent, org.elasticsearch.common.xcontent.ToXContentFragment

public class IndexMetadata extends Object implements Diffable<IndexMetadata>, org.elasticsearch.common.xcontent.ToXContentFragment
  • Field Details

    • INDEX_READ_ONLY_BLOCK

      public static final ClusterBlock INDEX_READ_ONLY_BLOCK
    • INDEX_READ_BLOCK

      public static final ClusterBlock INDEX_READ_BLOCK
    • INDEX_WRITE_BLOCK

      public static final ClusterBlock INDEX_WRITE_BLOCK
    • INDEX_METADATA_BLOCK

      public static final ClusterBlock INDEX_METADATA_BLOCK
    • INDEX_READ_ONLY_ALLOW_DELETE_BLOCK

      public static final ClusterBlock INDEX_READ_ONLY_ALLOW_DELETE_BLOCK
    • INDEX_SETTING_PREFIX

      public static final String INDEX_SETTING_PREFIX
      See Also:
      Constant Field Values
    • SETTING_NUMBER_OF_SHARDS

      public static final String SETTING_NUMBER_OF_SHARDS
      See Also:
      Constant Field Values
    • INDEX_NUMBER_OF_SHARDS_SETTING

      public static final Setting<Integer> INDEX_NUMBER_OF_SHARDS_SETTING
    • SETTING_NUMBER_OF_REPLICAS

      public static final String SETTING_NUMBER_OF_REPLICAS
      See Also:
      Constant Field Values
    • INDEX_NUMBER_OF_REPLICAS_SETTING

      public static final Setting<Integer> INDEX_NUMBER_OF_REPLICAS_SETTING
    • SETTING_ROUTING_PARTITION_SIZE

      public static final String SETTING_ROUTING_PARTITION_SIZE
      See Also:
      Constant Field Values
    • INDEX_ROUTING_PARTITION_SIZE_SETTING

      public static final Setting<Integer> INDEX_ROUTING_PARTITION_SIZE_SETTING
    • INDEX_NUMBER_OF_ROUTING_SHARDS_SETTING

      public static final Setting<Integer> INDEX_NUMBER_OF_ROUTING_SHARDS_SETTING
    • SETTING_AUTO_EXPAND_REPLICAS

      public static final String SETTING_AUTO_EXPAND_REPLICAS
      See Also:
      Constant Field Values
    • INDEX_AUTO_EXPAND_REPLICAS_SETTING

      public static final Setting<AutoExpandReplicas> INDEX_AUTO_EXPAND_REPLICAS_SETTING
    • SETTING_READ_ONLY

      public static final String SETTING_READ_ONLY
    • INDEX_READ_ONLY_SETTING

      public static final Setting<Boolean> INDEX_READ_ONLY_SETTING
    • SETTING_BLOCKS_READ

      public static final String SETTING_BLOCKS_READ
    • INDEX_BLOCKS_READ_SETTING

      public static final Setting<Boolean> INDEX_BLOCKS_READ_SETTING
    • SETTING_BLOCKS_WRITE

      public static final String SETTING_BLOCKS_WRITE
    • INDEX_BLOCKS_WRITE_SETTING

      public static final Setting<Boolean> INDEX_BLOCKS_WRITE_SETTING
    • SETTING_BLOCKS_METADATA

      public static final String SETTING_BLOCKS_METADATA
    • INDEX_BLOCKS_METADATA_SETTING

      public static final Setting<Boolean> INDEX_BLOCKS_METADATA_SETTING
    • SETTING_READ_ONLY_ALLOW_DELETE

      public static final String SETTING_READ_ONLY_ALLOW_DELETE
    • INDEX_BLOCKS_READ_ONLY_ALLOW_DELETE_SETTING

      public static final Setting<Boolean> INDEX_BLOCKS_READ_ONLY_ALLOW_DELETE_SETTING
    • SETTING_VERSION_CREATED

      public static final String SETTING_VERSION_CREATED
      See Also:
      Constant Field Values
    • SETTING_INDEX_VERSION_CREATED

      public static final Setting<Version> SETTING_INDEX_VERSION_CREATED
    • SETTING_VERSION_CREATED_STRING

      public static final String SETTING_VERSION_CREATED_STRING
      See Also:
      Constant Field Values
    • SETTING_CREATION_DATE

      public static final String SETTING_CREATION_DATE
      See Also:
      Constant Field Values
    • SETTING_VERSION_UPGRADED

      @Deprecated public static final String SETTING_VERSION_UPGRADED
      Deprecated.
      These internal settings are no longer added to new indices. They are deprecated but still defined to retain compatibility with old indexes. TODO: remove in 9.0.
      See Also:
      Constant Field Values
    • SETTING_VERSION_UPGRADED_STRING

      @Deprecated public static final String SETTING_VERSION_UPGRADED_STRING
      Deprecated.
      See Also:
      Constant Field Values
    • SETTING_INDEX_PROVIDED_NAME

      public static final String SETTING_INDEX_PROVIDED_NAME
      The user provided name for an index. This is the plain string provided by the user when the index was created. It might still contain date math expressions etc. (added in 5.0)
      See Also:
      Constant Field Values
    • SETTING_PRIORITY

      public static final String SETTING_PRIORITY
      See Also:
      Constant Field Values
    • INDEX_PRIORITY_SETTING

      public static final Setting<Integer> INDEX_PRIORITY_SETTING
    • SETTING_CREATION_DATE_STRING

      public static final String SETTING_CREATION_DATE_STRING
      See Also:
      Constant Field Values
    • SETTING_INDEX_UUID

      public static final String SETTING_INDEX_UUID
      See Also:
      Constant Field Values
    • SETTING_HISTORY_UUID

      public static final String SETTING_HISTORY_UUID
      See Also:
      Constant Field Values
    • SETTING_DATA_PATH

      public static final String SETTING_DATA_PATH
      See Also:
      Constant Field Values
    • INDEX_DATA_PATH_SETTING

      public static final Setting<String> INDEX_DATA_PATH_SETTING
    • INDEX_UUID_NA_VALUE

      public static final String INDEX_UUID_NA_VALUE
      See Also:
      Constant Field Values
    • INDEX_ROUTING_REQUIRE_GROUP_PREFIX

      public static final String INDEX_ROUTING_REQUIRE_GROUP_PREFIX
      See Also:
      Constant Field Values
    • INDEX_ROUTING_INCLUDE_GROUP_PREFIX

      public static final String INDEX_ROUTING_INCLUDE_GROUP_PREFIX
      See Also:
      Constant Field Values
    • INDEX_ROUTING_EXCLUDE_GROUP_PREFIX

      public static final String INDEX_ROUTING_EXCLUDE_GROUP_PREFIX
      See Also:
      Constant Field Values
    • INDEX_ROUTING_REQUIRE_GROUP_SETTING

      public static final Setting.AffixSetting<String> INDEX_ROUTING_REQUIRE_GROUP_SETTING
    • INDEX_ROUTING_INCLUDE_GROUP_SETTING

      public static final Setting.AffixSetting<String> INDEX_ROUTING_INCLUDE_GROUP_SETTING
    • INDEX_ROUTING_EXCLUDE_GROUP_SETTING

      public static final Setting.AffixSetting<String> INDEX_ROUTING_EXCLUDE_GROUP_SETTING
    • INDEX_ROUTING_INITIAL_RECOVERY_GROUP_SETTING

      public static final Setting.AffixSetting<String> INDEX_ROUTING_INITIAL_RECOVERY_GROUP_SETTING
    • SETTING_WAIT_FOR_ACTIVE_SHARDS

      public static final Setting<ActiveShardCount> SETTING_WAIT_FOR_ACTIVE_SHARDS
      The number of active shard copies to check for before proceeding with a write operation.
    • SETTING_INDEX_HIDDEN

      public static final String SETTING_INDEX_HIDDEN
      See Also:
      Constant Field Values
    • INDEX_HIDDEN_SETTING

      public static final Setting<Boolean> INDEX_HIDDEN_SETTING
      Whether the index is considered hidden or not. A hidden index will not be resolved in normal wildcard searches unless explicitly allowed
    • INDEX_FORMAT_SETTING

      public static final Setting<Integer> INDEX_FORMAT_SETTING
    • KEY_IN_SYNC_ALLOCATIONS

      public static final String KEY_IN_SYNC_ALLOCATIONS
      See Also:
      Constant Field Values
    • KEY_PRIMARY_TERMS

      public static final String KEY_PRIMARY_TERMS
      See Also:
      Constant Field Values
    • INDEX_STATE_FILE_PREFIX

      public static final String INDEX_STATE_FILE_PREFIX
      See Also:
      Constant Field Values
    • INDEX_RESIZE_SOURCE_UUID_KEY

      public static final String INDEX_RESIZE_SOURCE_UUID_KEY
      See Also:
      Constant Field Values
    • INDEX_RESIZE_SOURCE_NAME_KEY

      public static final String INDEX_RESIZE_SOURCE_NAME_KEY
      See Also:
      Constant Field Values
    • INDEX_RESIZE_SOURCE_UUID

      public static final Setting<String> INDEX_RESIZE_SOURCE_UUID
    • INDEX_RESIZE_SOURCE_NAME

      public static final Setting<String> INDEX_RESIZE_SOURCE_NAME
    • INDEX_ROLLUP_SOURCE_UUID_KEY

      public static final String INDEX_ROLLUP_SOURCE_UUID_KEY
      See Also:
      Constant Field Values
    • INDEX_ROLLUP_SOURCE_NAME_KEY

      public static final String INDEX_ROLLUP_SOURCE_NAME_KEY
      See Also:
      Constant Field Values
    • INDEX_ROLLUP_SOURCE_UUID

      public static final Setting<String> INDEX_ROLLUP_SOURCE_UUID
    • INDEX_ROLLUP_SOURCE_NAME

      public static final Setting<String> INDEX_ROLLUP_SOURCE_NAME
    • FORMAT

      public static final MetadataStateFormat<IndexMetadata> FORMAT
      State format for IndexMetadata to write to and load from disk
  • Method Details

    • getIndex

      public Index getIndex()
    • getIndexUUID

      public String getIndexUUID()
    • isSameUUID

      public boolean isSameUUID(String otherUUID)
      Test whether the current index UUID is the same as the given one. Returns true if either are _na_
    • getVersion

      public long getVersion()
    • getMappingVersion

      public long getMappingVersion()
    • getSettingsVersion

      public long getSettingsVersion()
    • getAliasesVersion

      public long getAliasesVersion()
    • primaryTerm

      public long primaryTerm(int shardId)
      The term of the current selected primary. This is a non-negative number incremented when a primary shard is assigned after a full cluster restart or a replica shard is promoted to a primary. Note: since we increment the term every time a shard is assigned, the term for any operational shard (i.e., a shard that can be indexed into) is larger than 0. See IndexMetadataUpdater.applyChanges(org.elasticsearch.cluster.metadata.Metadata, org.elasticsearch.cluster.routing.RoutingTable).
    • getCreationVersion

      public Version getCreationVersion()
      Return the Version on which this index has been created. This information is typically useful for backward compatibility.
    • getCreationDate

      public long getCreationDate()
    • getState

      public IndexMetadata.State getState()
    • getNumberOfShards

      public int getNumberOfShards()
    • getNumberOfReplicas

      public int getNumberOfReplicas()
    • getRoutingPartitionSize

      public int getRoutingPartitionSize()
    • isRoutingPartitionedIndex

      public boolean isRoutingPartitionedIndex()
    • getTotalNumberOfShards

      public int getTotalNumberOfShards()
    • getWaitForActiveShards

      public ActiveShardCount getWaitForActiveShards()
      Returns the configured SETTING_WAIT_FOR_ACTIVE_SHARDS, which defaults to an active shard count of 1 if not specified.
    • getSettings

      public Settings getSettings()
    • getAliases

      public ImmutableOpenMap<String,AliasMetadata> getAliases()
    • getMappings

      Deprecated.
      Use mapping() instead now that indices have a single type
      Return an object that maps each type to the associated mappings. The return value is never null but may be empty if the index has no mappings.
    • mapping

      @Nullable public MappingMetadata mapping()
      Return the concrete mapping for this index or null if this index has no mappings at all.
    • defaultMapping

      @Nullable public MappingMetadata defaultMapping()
      Get the default mapping. NOTE: this is always null for 7.x indices which are disallowed to have a default mapping.
    • getResizeSourceIndex

      public Index getResizeSourceIndex()
    • mappingOrDefault

      @Nullable public MappingMetadata mappingOrDefault()
      Sometimes, the default mapping exists and an actual mapping is not created yet (introduced), in this case, we want to return the default mapping in case it has some default mapping definitions.

      Note, once the mapping type is introduced, the default mapping is applied on the actual typed MappingMetadata, setting its routing, timestamp, and so on if needed.

    • getCustomData

      public Map<String,String> getCustomData(String key)
    • getInSyncAllocationIds

      public ImmutableOpenIntMap<Set<String>> getInSyncAllocationIds()
    • getRolloverInfos

      public ImmutableOpenMap<String,RolloverInfo> getRolloverInfos()
    • inSyncAllocationIds

      public Set<String> inSyncAllocationIds(int shardId)
    • requireFilters

      @Nullable public DiscoveryNodeFilters requireFilters()
    • getInitialRecoveryFilters

      @Nullable public DiscoveryNodeFilters getInitialRecoveryFilters()
    • includeFilters

      @Nullable public DiscoveryNodeFilters includeFilters()
    • excludeFilters

      @Nullable public DiscoveryNodeFilters excludeFilters()
    • getTimestampRange

      public IndexLongFieldRange getTimestampRange()
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • diff

      public Diff<IndexMetadata> diff(IndexMetadata previousState)
      Description copied from interface: Diffable
      Returns serializable object representing differences between this and previousState
      Specified by:
      diff in interface Diffable<IndexMetadata>
    • readDiffFrom

      public static Diff<IndexMetadata> readDiffFrom(StreamInput in) throws IOException
      Throws:
      IOException
    • fromXContent

      public static IndexMetadata fromXContent(org.elasticsearch.common.xcontent.XContentParser parser) throws IOException
      Throws:
      IOException
    • toXContent

      public org.elasticsearch.common.xcontent.XContentBuilder toXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params) throws IOException
      Specified by:
      toXContent in interface org.elasticsearch.common.xcontent.ToXContent
      Throws:
      IOException
    • readFrom

      public static IndexMetadata readFrom(StreamInput in) throws IOException
      Throws:
      IOException
    • writeTo

      public void writeTo(StreamOutput out) throws IOException
      Description copied from interface: Writeable
      Write this into the StreamOutput.
      Specified by:
      writeTo in interface Writeable
      Throws:
      IOException
    • isSystem

      public boolean isSystem()
    • builder

      public static IndexMetadata.Builder builder(String index)
    • builder

      public static IndexMetadata.Builder builder(IndexMetadata indexMetadata)
    • addHumanReadableSettings

      public static Settings addHumanReadableSettings(Settings settings)
      Adds human readable version and creation date settings. This method is used to display the settings in a human readable format in REST API
    • getRoutingNumShards

      public int getRoutingNumShards()
      Returns the number of shards that should be used for routing. This basically defines the hash space we use in OperationRouting.generateShardId(IndexMetadata, String, String) to route documents to shards based on their ID or their specific routing value. The default value is getNumberOfShards(). This value only changes if and index is shrunk.
    • getRoutingFactor

      public int getRoutingFactor()
      Returns the routing factor for this index. The default is 1.
      See Also:
      for details
    • selectSplitShard

      public static ShardId selectSplitShard(int shardId, IndexMetadata sourceIndexMetadata, int numTargetShards)
      Returns the source shard ID to split the given target shard off
      Parameters:
      shardId - the id of the target shard to split into
      sourceIndexMetadata - the source index metadata
      numTargetShards - the total number of shards in the target index
      Returns:
      a the source shard ID to split off from
    • selectCloneShard

      public static ShardId selectCloneShard(int shardId, IndexMetadata sourceIndexMetadata, int numTargetShards)
      Returns the source shard ID to clone the given target shard off
      Parameters:
      shardId - the id of the target shard to clone into
      sourceIndexMetadata - the source index metadata
      numTargetShards - the total number of shards in the target index
      Returns:
      a the source shard ID to clone from
    • selectRecoverFromShards

      public static Set<ShardId> selectRecoverFromShards(int shardId, IndexMetadata sourceIndexMetadata, int numTargetShards)
      Selects the source shards for a local shard recovery. This might either be a split or a shrink operation.
      Parameters:
      shardId - the target shard ID to select the source shards for
      sourceIndexMetadata - the source metadata
      numTargetShards - the number of target shards
    • selectShrinkShards

      public static Set<ShardId> selectShrinkShards(int shardId, IndexMetadata sourceIndexMetadata, int numTargetShards)
      Returns the source shard ids to shrink into the given shard id.
      Parameters:
      shardId - the id of the target shard to shrink to
      sourceIndexMetadata - the source index metadata
      numTargetShards - the total number of shards in the target index
      Returns:
      a set of shard IDs to shrink into the given shard ID.
    • getRoutingFactor

      public static int getRoutingFactor(int sourceNumberOfShards, int targetNumberOfShards)
      Returns the routing factor for and shrunk index with the given number of target shards. This factor is used in the hash function in OperationRouting.generateShardId(IndexMetadata, String, String) to guarantee consistent hashing / routing of documents even if the number of shards changed (ie. a shrunk index).
      Parameters:
      sourceNumberOfShards - the total number of shards in the source index
      targetNumberOfShards - the total number of shards in the target index
      Returns:
      the routing factor for and shrunk index with the given number of target shards.
      Throws:
      IllegalArgumentException - if the number of source shards is less than the number of target shards or if the source shards are not divisible by the number of target shards.
    • parseIndexNameCounter

      public static int parseIndexNameCounter(String indexName)
      Parses the number from the rolled over index name. It also supports the date-math format (ie. index name is wrapped in < and >) E.g. - For ".ds-logs-000002" it will return 2 - For "<logs-{now/d}-3>" it'll return 3
      Throws:
      IllegalArgumentException - if the index doesn't contain a "-" separator or if the last token after the separator is not a number