[role="xpack"]
[[data-tier-shard-filtering]]
=== Index-level data tier allocation filtering

You can use index-level allocation settings to control which <<data-tiers, data tier>>
the index is allocated to. The data tier allocator is a
<<shard-allocation-filtering, shard allocation filter>> that uses two built-in
node attributes:  `_tier` and `_tier_preference`.

These tier attributes are set using the data node roles:

* <<data-content-node, data_content>>
* <<data-hot-node, data_hot>>
* <<data-warm-node, data_warm>>
* <<data-cold-node, data_cold>>
* <<data-frozen-node, data_frozen>>

NOTE: The <<data-node, data>> role is not a valid data tier and cannot be used
for data tier filtering. The frozen tier stores <<partially-mounted,partially
mounted indices>> exclusively.

[discrete]
[[data-tier-allocation-filters]]
==== Data tier allocation settings


`index.routing.allocation.include._tier`::

    Assign the index to a node whose `node.roles` configuration has at
    least one of to the comma-separated values.

    deprecated::[7.13, Filtering based on `include._tier`, `require._tier` and `exclude._tier` is deprecated, use <<tier-preference-allocation-filter,_tier_preference>> instead]

`index.routing.allocation.require._tier`::

    Assign the index to a node whose `node.roles` configuration has _all_
    of the comma-separated values.

    deprecated::[7.13, Filtering based on `include._tier`, `require._tier` and `exclude._tier` is deprecated, use <<tier-preference-allocation-filter,_tier_preference>> instead]

`index.routing.allocation.exclude._tier`::

    Assign the index to a node whose `node.roles` configuration has _none_ of the
    comma-separated values.

    deprecated::[7.13, Filtering based on `include._tier`, `require._tier` and `exclude._tier` is deprecated, use <<tier-preference-allocation-filter,_tier_preference>> instead]

[[tier-preference-allocation-filter]]
`index.routing.allocation.include._tier_preference`::

    Assign the index to the first tier in the list that has an available node.
    This prevents indices from remaining unallocated if no nodes are available
    in the preferred tier.
    For example, if you set `index.routing.allocation.include._tier_preference`
    to `data_warm,data_hot`, the index is allocated to the warm tier if there
    are nodes with the `data_warm` role. If there are no nodes in the warm tier,
    but there are nodes with the `data_hot` role, the index is allocated to
    the hot tier.
