Simulate multi-component templates
editSimulate multi-component templates
editSince 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*" ] } ] }