Templates help create indexes in a consistent way automatically. This saves time and avoids mistakes.
Why templates standardize index creation in Elasticsearch
Introduction
Syntax
Elasticsearch
PUT _index_template/template_name
{
"index_patterns": ["pattern*"],
"template": {
"settings": { ... },
"mappings": { ... }
}
}Use
index_patterns to match index names the template applies to.The
template section defines settings and mappings for matching indexes.Examples
logs-. It sets 1 shard and defines two fields.Elasticsearch
PUT _index_template/my_template
{
"index_patterns": ["logs-*"],
"template": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"timestamp": {"type": "date"},
"message": {"type": "text"}
}
}
}
}user-data-* indexes have 2 replicas and specific fields.Elasticsearch
PUT _index_template/user_data_template
{
"index_patterns": ["user-data-*"],
"template": {
"settings": {
"number_of_replicas": 2
},
"mappings": {
"properties": {
"user_id": {"type": "keyword"},
"signup_date": {"type": "date"}
}
}
}
}Sample Program
This creates a template for indexes named test-index-*. Then it creates an index test-index-001 with data. Finally, it gets the mapping to show the template applied.
Elasticsearch
PUT _index_template/sample_template
{
"index_patterns": ["test-index-*"],
"template": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"name": {"type": "text"},
"created_at": {"type": "date"}
}
}
}
}
POST test-index-001/_doc
{
"name": "Alice",
"created_at": "2024-01-01"
}
GET test-index-001/_mappingImportant Notes
Templates apply only to new indexes created after the template is set.
You can update templates anytime to change future index creation.
Templates help keep data organized and searchable in the same way.
Summary
Templates automatically set index settings and mappings for matching index names.
This saves time and avoids errors when creating many indexes.
Use templates to keep your data consistent and easy to search.
Practice
1. Why do Elasticsearch index templates help when creating multiple indexes with similar data?
easy
Solution
Step 1: Understand the purpose of index templates
Index templates define settings and mappings that apply automatically to new indexes matching a pattern.Step 2: Recognize the benefit of consistency
Using templates ensures all similar indexes have the same structure, avoiding manual errors and saving time.Final Answer:
They automatically apply consistent settings and mappings to all matching indexes. -> Option CQuick Check:
Templates = consistent index setup [OK]
Hint: Templates set index rules automatically for matching names [OK]
Common Mistakes:
- Thinking templates speed up searches directly
- Confusing templates with index deletion tools
- Believing templates change data format
2. Which of the following is the correct way to define an index template in Elasticsearch?
easy
Solution
Step 1: Recall the correct template structure
Elasticsearch templates use "index_patterns" to match index names and "template" to define settings and mappings.Step 2: Identify the valid JSON format
{ "template": { "settings": { "number_of_shards": 1 } }, "index_patterns": ["logs-*"] } correctly uses "index_patterns" and nests settings inside "template".Final Answer:
{ "template": { "settings": { "number_of_shards": 1 } }, "index_patterns": ["logs-*"] } -> Option DQuick Check:
Correct template keys = { "template": { "settings": { "number_of_shards": 1 } }, "index_patterns": ["logs-*"] } [OK]
Hint: Look for "index_patterns" and nested "template" keys [OK]
Common Mistakes:
- Using "pattern" instead of "index_patterns"
- Placing settings outside the "template" object
- Using incorrect JSON keys like "match"
3. Given this template:
{
"index_patterns": ["sales-*"],
"template": {
"settings": { "number_of_replicas": 2 },
"mappings": { "properties": { "price": { "type": "float" } } }
}
}
What will be the number_of_replicas for an index named sales-2024 created after this template?medium
Solution
Step 1: Match index name with template pattern
The index name "sales-2024" matches the pattern "sales-*" in the template.Step 2: Apply template settings to the index
The template sets "number_of_replicas" to 2, so the new index will have 2 replicas.Final Answer:
2 -> Option AQuick Check:
Matching pattern applies replicas = 2 [OK]
Hint: Match index name to pattern, then apply template settings [OK]
Common Mistakes:
- Assuming default replicas instead of template value
- Ignoring pattern matching rules
- Confusing replicas with shards
4. You created this template:
{
"index_patterns": ["app-*"],
"template": {
"settings": { "number_of_shards": 3 }
}
}
But new indexes named app-logs are created with 5 shards instead of 3. What is the likely problem?medium
Solution
Step 1: Understand when templates apply
Templates apply only when an index is created. Existing indexes keep their original settings.Step 2: Check index creation timing
If indexes were created before the template, they won't have the template's shard settings.Final Answer:
The template was created after the indexes were created. -> Option AQuick Check:
Templates affect new indexes only [OK]
Hint: Templates apply only at index creation time [OK]
Common Mistakes:
- Thinking templates update existing indexes
- Assuming pattern mismatch without checking
- Believing shard count can't be set in templates
5. You want to ensure all indexes starting with
user-data- have the same mapping for a username field as keyword type and 1 shard. Which template JSON correctly achieves this?hard
Solution
Step 1: Check index pattern and template structure
{ "index_patterns": ["user-data-*"], "template": { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "username": { "type": "keyword" } } } } } uses "index_patterns" and nests settings and mappings inside "template", which is correct.Step 2: Verify settings and mapping details
It sets "number_of_shards" to 1 and maps "username" as "keyword", matching requirements.Final Answer:
{ "index_patterns": ["user-data-*"], "template": { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "username": { "type": "keyword" } } } } } -> Option BQuick Check:
Correct pattern, shards, and mapping = { "index_patterns": ["user-data-*"], "template": { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "username": { "type": "keyword" } } } } } [OK]
Hint: Use "index_patterns" and nest settings/mappings inside "template" [OK]
Common Mistakes:
- Using wrong keys like "pattern" or placing settings outside "template"
- Setting wrong shard or replica counts
- Mapping "username" as "text" instead of "keyword"
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
