Loading

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.

  1. For each node, decide which data tier or tiers it should participate in (for example data_hot, data_warm, data_cold, data_frozen, or data_content).
  2. Set node.roles in that node’s elasticsearch.yml to include the corresponding data_* roles (and any other roles the node should have, such as ingest or master).
  3. 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"]
		
Note

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.