マルチコンポーネントテンプレートのシミュレーション
テンプレートは複数のコンポーネントテンプレートだけでなく、インデックステンプレート自体からも構成できるため、結果として得られるインデックス設定を決定するための2つのシミュレーションAPIがあります。
特定のインデックス名に適用される設定をシミュレートするには:
Python
resp = client.indices.simulate_index_template(
name="my-index-000001",
)
print(resp)
Js
const response = await client.indices.simulateIndexTemplate({
name: "my-index-000001",
});
console.log(response);
コンソール
POST /_index_template/_simulate_index/my-index-000001
既存のテンプレートから適用される設定をシミュレートするには:
Python
resp = client.indices.simulate_template(
name="template_1",
)
print(resp)
Js
const response = await client.indices.simulateTemplate({
name: "template_1",
});
console.log(response);
コンソール
POST /_index_template/_simulate/template_1
シミュレートリクエストでテンプレート定義を指定することもできます。これにより、新しいテンプレートを追加する前に、設定が期待通りに適用されることを確認できます。
Python
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)
Ruby
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
Js
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"]
}
レスポンスには、マッチするインデックスに適用される設定、マッピング、およびエイリアスが表示され、シミュレートされたテンプレート本体または優先度の高いテンプレートによって上書きされる構成を持つ重複するテンプレートが表示されます。
コンソール-結果
{
"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*"
]
}
]
}
シミュレートされたテンプレート本体からのシャードの数 | |
@timestamp コンポーネントテンプレートから継承されたフィールド |
|
マッチしたが優先度が低い重複するテンプレート |