使用例
以下に、1つのコンポーネントテンプレートとインデックステンプレートが作成されます。インデックステンプレートは2つのコンポーネントテンプレートを参照しますが、@package
のものだけが存在します。
コンポーネントテンプレートlogs-foo_component1
を作成します。これはインデックステンプレートの前に作成する必要があります。これはオプションではありません:
Python
resp = client.cluster.put_component_template(
name="logs-foo_component1",
template={
"mappings": {
"properties": {
"host.name": {
"type": "keyword"
}
}
}
},
)
print(resp)
Ruby
response = client.cluster.put_component_template(
name: 'logs-foo_component1',
body: {
template: {
mappings: {
properties: {
'host.name' => {
type: 'keyword'
}
}
}
}
}
)
puts response
Js
const response = await client.cluster.putComponentTemplate({
name: "logs-foo_component1",
template: {
mappings: {
properties: {
"host.name": {
type: "keyword",
},
},
},
},
});
console.log(response);
コンソール
PUT _component_template/logs-foo_component1
{
"template": {
"mappings": {
"properties": {
"host.name": {
"type": "keyword"
}
}
}
}
}
次に、インデックステンプレートが作成され、2つのコンポーネントテンプレートを参照します:
JSON
"composed_of": ["logs-foo_component1", "logs-foo_component2"]
以前は、logs-foo_component1
コンポーネントテンプレートのみが作成されており、logs-foo_component2
が欠けていました。このため、次のエントリが設定に追加されました:
JSON
"ignore_missing_component_templates": ["logs-foo_component2"],
テンプレートの作成中に、logs-foo_component2
が存在するかどうかは検証されません:
Python
resp = client.indices.put_index_template(
name="logs-foo",
index_patterns=[
"logs-foo-*"
],
data_stream={},
composed_of=[
"logs-foo_component1",
"logs-foo_component2"
],
ignore_missing_component_templates=[
"logs-foo_component2"
],
priority=500,
)
print(resp)
Ruby
response = client.indices.put_index_template(
name: 'logs-foo',
body: {
index_patterns: [
'logs-foo-*'
],
data_stream: {},
composed_of: [
'logs-foo_component1',
'logs-foo_component2'
],
ignore_missing_component_templates: [
'logs-foo_component2'
],
priority: 500
}
)
puts response
Js
const response = await client.indices.putIndexTemplate({
name: "logs-foo",
index_patterns: ["logs-foo-*"],
data_stream: {},
composed_of: ["logs-foo_component1", "logs-foo_component2"],
ignore_missing_component_templates: ["logs-foo_component2"],
priority: 500,
});
console.log(response);
コンソール
PUT _index_template/logs-foo
{
"index_patterns": ["logs-foo-*"],
"data_stream": { },
"composed_of": ["logs-foo_component1", "logs-foo_component2"],
"ignore_missing_component_templates": ["logs-foo_component2"],
"priority": 500
}
インデックステンプレートlogs-foo
が正常に作成されました。このテンプレートに基づいてデータストリームを作成できます:
Python
resp = client.indices.create_data_stream(
name="logs-foo-bar",
)
print(resp)
Ruby
response = client.indices.create_data_stream(
name: 'logs-foo-bar'
)
puts response
Js
const response = await client.indices.createDataStream({
name: "logs-foo-bar",
});
console.log(response);
コンソール
PUT _data_stream/logs-foo-bar
データストリームのマッピングを見てみると、host.name
フィールドが含まれています。
後の段階で、欠けているコンポーネントテンプレートが追加される可能性があります:
Python
resp = client.cluster.put_component_template(
name="logs-foo_component2",
template={
"mappings": {
"properties": {
"host.ip": {
"type": "ip"
}
}
}
},
)
print(resp)
Ruby
response = client.cluster.put_component_template(
name: 'logs-foo_component2',
body: {
template: {
mappings: {
properties: {
'host.ip' => {
type: 'ip'
}
}
}
}
}
)
puts response
Js
const response = await client.cluster.putComponentTemplate({
name: "logs-foo_component2",
template: {
mappings: {
properties: {
"host.ip": {
type: "ip",
},
},
},
},
});
console.log(response);
コンソール
PUT _component_template/logs-foo_component2
{
"template": {
"mappings": {
"properties": {
"host.ip": {
"type": "ip"
}
}
}
}
}
これにより、データストリームに即座に影響はありません。マッピングhost.ip
は、データストリームが次回自動的にロールオーバーされるか、手動ロールオーバーがトリガーされたときにのみデータストリームのマッピングに表示されます:
Python
resp = client.indices.rollover(
alias="logs-foo-bar",
)
print(resp)
Ruby
response = client.indices.rollover(
alias: 'logs-foo-bar'
)
puts response
Js
const response = await client.indices.rollover({
alias: "logs-foo-bar",
});
console.log(response);
コンソール
POST logs-foo-bar/_rollover