Hot-warm-cold architecture in Elasticsearch - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When using hot-warm-cold architecture in Elasticsearch, we want to understand how query time changes as data grows across different storage layers.
We ask: How does the time to search or manage data grow when data moves between hot, warm, and cold nodes?
Analyze the time complexity of a search query routed through hot, warm, and cold nodes.
GET /logs-*/_search
{
"query": {
"match": { "message": "error" }
}
}
This query searches logs spread across hot, warm, and cold nodes, each storing different data ages.
Look at how the query runs on each node type.
- Primary operation: Searching through shards on hot, warm, and cold nodes.
- How many times: Once per shard in each node tier holding relevant data.
As data grows, more shards exist in warm and cold nodes, increasing search time.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 GB | Searches mostly on hot nodes, fewer shards. |
| 100 GB | More shards on warm nodes, search time grows moderately. |
| 1 TB | Many shards on cold nodes, search time grows more. |
Pattern observation: Search time grows roughly with the number of shards queried across tiers.
Time Complexity: O(n)
This means search time grows linearly with the amount of data spread across hot, warm, and cold nodes.
[X] Wrong: "Searching cold nodes is always slow regardless of data size."
[OK] Correct: Cold nodes can be optimized with fewer shards or slower hardware, but search time depends on data size and shard count, not just node type.
Understanding how data tiering affects search time helps you design scalable Elasticsearch clusters and explain performance trade-offs clearly.
"What if we combined warm and cold nodes into a single tier? How would the time complexity change?"
Practice
Solution
Step 1: Understand the architecture purpose
The hot-warm-cold architecture is designed to optimize storage costs and performance by placing recent data on fast nodes and older data on slower, cheaper nodes.Step 2: Match the purpose to options
To store recent data on fast nodes and older data on slower, cheaper nodes correctly describes this purpose, while other options describe different Elasticsearch features.Final Answer:
To store recent data on fast nodes and older data on slower, cheaper nodes -> Option BQuick Check:
Hot-warm-cold architecture = store data by age and speed [OK]
- Confusing hot-warm-cold with backup or replication
- Thinking it encrypts data automatically
- Assuming it manages cluster replication
Solution
Step 1: Identify automation for data phase movement
Index Lifecycle Management (ILM) automates moving indices through hot, warm, and cold phases based on policies.Step 2: Compare other features
Snapshot and Restore handles backups, Cross-cluster Search queries multiple clusters, and Document Level Security controls access, so they don't automate data movement.Final Answer:
Index Lifecycle Management (ILM) -> Option CQuick Check:
ILM automates data phase transitions [OK]
- Choosing Snapshot instead of ILM
- Confusing security features with lifecycle management
- Thinking cross-cluster search manages data phases
{
"phases": {
"hot": {"min_age": "0d"},
"warm": {"min_age": "7d"},
"cold": {"min_age": "30d"}
}
}Solution
Step 1: Analyze min_age values for phases
The policy defines hot from 0 days, warm from 7 days, and cold from 30 days.Step 2: Determine phase after 30 days
After 30 days, the index reaches the cold phase because its min_age is 30 days, which is the threshold for cold.Final Answer:
Cold phase -> Option AQuick Check:
30 days = cold phase start [OK]
- Choosing warm phase after 30 days
- Confusing delete phase with cold phase
- Ignoring min_age thresholds
{
"phases": {
"hot": {"min_age": "0d"},
"warm": {"min_age": "10d"}
}
}
What is the likely problem?Solution
Step 1: Understand ILM phase transition requirements
For an index to move from hot to warm, rollover conditions like size or age must be met.Step 2: Identify missing trigger
If the index size is too small, rollover won't happen, so the index stays in hot phase and never moves to warm.Final Answer:
The index size is too small to trigger rollover -> Option AQuick Check:
Small index size blocks rollover and phase move [OK]
- Assuming missing allocation causes no move
- Thinking warm phase min_age is too low
- Believing cold phase is required to move to warm
Solution
Step 1: Identify required phase ages
Indices older than 60 days should move to cold, and older than 90 days should be deleted.Step 2: Match policy phases to requirements
{ "phases": { "hot": {"min_age": "0d"}, "cold": {"min_age": "60d"}, "delete": {"min_age": "90d"} } } has hot at 0d, cold at 60d, and delete at 90d, matching the requirements exactly.Final Answer:
{ "phases": { "hot": {"min_age": "0d"}, "cold": {"min_age": "60d"}, "delete": {"min_age": "90d"} } } -> Option DQuick Check:
60d cold and 90d delete phases match [OK]
- Adding unnecessary warm phase with wrong min_age
- Setting delete phase too early
- Skipping cold phase before delete
