Simulate multi-component templates
Since templates can be composed not only of multiple component templates, but also the index template itself, there are two simulation APIs to determine what the resulting index settings will be.
To simulate the settings that would be applied to a particular index name:
resp = client.indices.simulate_index_template(
name="my-index-000001",
)
print(resp) const response = await client.indices.simulateIndexTemplate({
name: "my-index-000001",
});
console.log(response); POST /_index_template/_simulate_index/my-index-000001
To simulate the settings that would be applied from an existing template:
resp = client.indices.simulate_template(
name="template_1",
)
print(resp) const response = await client.indices.simulateTemplate({
name: "template_1",
});
console.log(response); POST /_index_template/_simulate/template_1
You can also specify a template definition in the simulate request. This enables you to verify that settings will be applied as expected before you add a new template.
resp = client.cluster.put_component_template(
name="ct1",
template={
"settings": {
"index.number_of_shards": 2
}
},
)
print(resp)
resp1 = client.cluster.put_component_template(
name="ct2",
template={
"settings": {
"index.number_of_replicas": 0
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
},
)
print(resp1)
resp2 = client.indices.simulate_template(
index_patterns=[
"my*"
],
template={
"settings": {
"index.number_of_shards": 3
}
},
composed_of=[
"ct1",
"ct2"
],
)
print(resp2) response = client.cluster.put_component_template(
name: 'ct1',
body: {
template: {
settings: {
'index.number_of_shards' => 2
}
}
}
)
puts response
response = client.cluster.put_component_template(
name: 'ct2',
body: {
template: {
settings: {
'index.number_of_replicas' => 0
},
mappings: {
properties: {
"@timestamp": {
type: 'date'
}
}
}
}
}
)
puts response
response = client.indices.simulate_template(
body: {
index_patterns: [
'my*'
],
template: {
settings: {
'index.number_of_shards' => 3
}
},
composed_of: [
'ct1',
'ct2'
]
}
)
puts response const response = await client.cluster.putComponentTemplate({
name: "ct1",
template: {
settings: {
"index.number_of_shards": 2,
},
},
});
console.log(response);
const response1 = await client.cluster.putComponentTemplate({
name: "ct2",
template: {
settings: {
"index.number_of_replicas": 0,
},
mappings: {
properties: {
"@timestamp": {
type: "date",
},
},
},
},
});
console.log(response1);
const response2 = await client.indices.simulateTemplate({
index_patterns: ["my*"],
template: {
settings: {
"index.number_of_shards": 3,
},
},
composed_of: ["ct1", "ct2"],
});
console.log(response2); PUT /_component_template/ct1
{
"template": {
"settings": {
"index.number_of_shards": 2
}
}
}
PUT /_component_template/ct2
{
"template": {
"settings": {
"index.number_of_replicas": 0
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
}
}
POST /_index_template/_simulate
{
"index_patterns": ["my*"],
"template": {
"settings" : {
"index.number_of_shards" : 3
}
},
"composed_of": ["ct1", "ct2"]
} The response shows the settings, mappings, and aliases that would be applied to matching indices, and any overlapping templates whose configuration would be superseded by the simulated template body or higher-priority templates.
{
"template" : {
"settings" : {
"index" : {
"number_of_shards" : "3",
"number_of_replicas" : "0",
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
}
}
},
"mappings" : {
"properties" : {
"@timestamp" : {
"type" : "date"
}
}
},
"aliases" : { }
},
"overlapping" : [
{
"name" : "template_1",
"index_patterns" : [
"my*"
]
}
]
} | The number of shards from the simulated template body | |
| The | |
| Any overlapping templates that would have matched, but have lower priority |
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/simulate-multi-component-templates.html