Configure data tiers for self-managed and Elastic Cloud on Kubernetes deployments
Whether you operate Elasticsearch on your own infrastructure or on Kubernetes with Elastic Cloud on Kubernetes, data tiers are expressed through each node’s data role. You choose which tiers the cluster offers by assigning the corresponding data_* roles to nodes or to ECK node sets.
- Review Elasticsearch data tiers so you match tiers to your workload.
- Understand how node roles map to hardware and allocation for each tier.
- For each node, decide which data tier or tiers it should participate in (for example
data_hot,data_warm,data_cold,data_frozen, ordata_content). - Set
node.rolesin that node’selasticsearch.ymlto include the correspondingdata_*roles (and any other roles the node should have, such asingestormaster). - Restart the node or apply your configuration rollout process so the new roles take effect.
For example, the highest-performance nodes in a cluster might be assigned to both the hot and content tiers:
node.roles: ["data_hot", "data_content"]
We recommend you use dedicated nodes in the frozen tier.
Elasticsearch settings that you would normally put in elasticsearch.yml are set per node set under spec.nodeSets[?].config in the Elasticsearch resource manifest. Assign node.roles there to define each group of pods’ tiers. For example, you can assign the following tiers:
spec:
nodeSets:
- name: hot-content
count: 3
config:
node.roles: ["data_hot", "data_content", "ingest"]
Some settings are managed by Elastic Cloud on Kubernetes; avoid overriding those. For the full mapping between manifest structure and Elasticsearch configuration, see Node configuration.