コンポーネントテンプレートAPIの作成または更新
コンポーネントテンプレートを作成または更新します。コンポーネントテンプレートは、インデックスのmappings、settings、およびaliasesを指定するindex templatesを構築するための基本要素です。
コンソール
PUT _component_template/template_1
{
"template": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date"
}
}
}
}
}
リクエスト
PUT /_component_template/<component-template>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには、
manage_index_templates
またはmanage
クラスタ特権を持っている必要があります。
説明
インデックステンプレートは、複数のコンポーネントテンプレートで構成できます。コンポーネントテンプレートを使用するには、インデックステンプレートのcomposed_of
リストに指定します。コンポーネントテンプレートは、マッチするインデックステンプレートの一部として、新しいデータストリームおよびインデックスにのみ適用されます。
インデックステンプレートまたはcreate indexリクエストで直接指定された設定およびマッピングは、コンポーネントテンプレートで指定された設定またはマッピングを上書きします。
コンポーネントテンプレートは、インデックス作成中にのみ使用されます。データストリームの場合、これにはデータストリームの作成とストリームのバックインデックスの作成が含まれます。コンポーネントテンプレートの変更は、既存のインデックス、ストリームのバックインデックスを含むには影響しません。
コンポーネントテンプレート内のコメント
コンポーネントテンプレート内でCスタイルの/ /ブロックコメントを使用できます。リクエストボディのどこにでもコメントを含めることができますが、開き中括弧の前には含めないでください。
パスパラメータ
<component-template>
- (必須、文字列) 作成するコンポーネントテンプレートの名前。
Elasticsearchには、次の組み込みコンポーネントテンプレートが含まれています:logs@mappings
logs@settings
metrics@mappings
metrics@settings
metrics@tsdb-settings
synthetics@mapping
synthetics@settings
Elastic Agentは、これらのテンプレートを使用してデータストリームのバックインデックスを構成します。これらのテンプレートをカスタマイズしたい場合は、上書きしないでください。更新後にリセットされる可能性があります。代わりに、管理されたインデックステンプレートのcomposed_of
セクションで*@custom
コンポーネントテンプレートを探してください。これらのカスタムコンポーネントテンプレートを使用すると、管理されたインデックステンプレートのマッピングをカスタマイズできます。管理されたインデックステンプレートやコンポーネントテンプレートを上書きする必要はありません。カスタムコンポーネントテンプレートはまだ存在しない可能性があります。Create or update component templateを使用して作成した後、インデックステンプレートによって取得されます。対応するデータストリームに変更を適用する方法については、データストリームのマッピングと設定の変更を参照してください。
組み込みおよびFleet管理のコンポーネントテンプレートとの名前の衝突を避けるために、独自のコンポーネントテンプレート名の一部として@
を使用しないでください。このルールの例外は、管理されたインデックステンプレートを安全にカスタマイズできる*@custom
コンポーネントテンプレートです。
クエリパラメータ
create
- (オプション、ブール値)
true
の場合、このリクエストは既存のコンポーネントテンプレートを置き換えたり更新したりできません。デフォルトはfalse
です。 master_timeout
- (オプション、時間単位) マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは
30s
です。-1
に設定することもでき、リクエストがタイムアウトしないことを示します。
リクエストボディ
template
- (必須、オブジェクト) これは適用されるテンプレートであり、
mappings
、settings
、またはaliases
の構成をオプションで含めることができます。- `````aliases
- (オプション、オブジェクトのオブジェクト) 追加するエイリアス。
インデックステンプレートにdata_stream
オブジェクトが含まれている場合、これらはデータストリームエイリアスです。そうでない場合、これらはインデックスエイリアスです。データストリームエイリアスは、index_routing
、routing
、およびsearch_routing
オプションを無視します。- `````<alias>
- (必須、オブジェクト) キーはエイリアス名です。インデックスエイリアス名は日付数学をサポートしています。
オブジェクトボディにはエイリアスのオプションが含まれています。空のオブジェクトをサポートします。<alias>
のプロパティ filter
- (オプション、クエリDSLオブジェクト) エイリアスがアクセスできるドキュメントを制限するために使用されるクエリ。
index_routing
- (オプション、文字列) インデックス操作を特定のシャードにルーティングするために使用される値。指定された場合、これはインデックス操作の
routing
値を上書きします。 is_hidden
- (オプション、ブール値)
true
の場合、エイリアスはbhiddenです。デフォルトはfalse
です。エイリアスのすべてのインデックスは同じis_hidden
値を持っている必要があります。 is_write_index
- (オプション、ブール値)
true
の場合、インデックスはエイリアスの書き込みインデックスです。デフォルトはfalse
です。 routing
- (オプション、文字列) インデックス操作と検索操作を特定のシャードにルーティングするために使用される値。
search_routing
- (オプション、文字列) 検索操作を特定のシャードにルーティングするために使用される値。指定された場合、これは検索操作の
routing
値を上書きします。
mappings
- (オプション、マッピングオブジェクト) インデックス内のフィールドのマッピング。指定された場合、このマッピングには次のものが含まれる可能性があります:
- フィールド名
- フィールドデータ型
- マッピングパラメータ
マッピングを参照してください。
settings
- (オプション、インデックス設定オブジェクト) インデックスの構成オプション。 インデックス設定を参照してください。
version
- (オプション、整数) コンポーネントテンプレートを外部で管理するために使用されるバージョン番号。この番号はElasticsearchによって自動的に生成または増加されません。
allow_auto_create
- (オプション、ブール値) この設定は、
action.auto_create_index
クラスタ設定の値を上書きします。テンプレート内でtrue
に設定されている場合、インデックスの自動作成がactions.auto_create_index
を介して無効になっていても、そのテンプレートを使用してインデックスを自動的に作成できます。false
に設定されている場合、テンプレートに一致するインデックスまたはデータストリームは常に明示的に作成される必要があり、自動的に作成されることはありません。 _meta
- (オプション、オブジェクト) コンポーネントテンプレートに関するオプションのユーザーメタデータ。任意の内容を持つことができます。このマップはElasticsearchによって自動的に生成されません。
deprecated
- (オプション、ブール値) このコンポーネントテンプレートを非推奨としてマークします。非推奨のコンポーネントテンプレートが非推奨でないインデックステンプレートの作成または更新時に参照されると、Elasticsearchは非推奨警告を発します。
例
インデックスエイリアスを持つコンポーネントテンプレート
コンポーネントテンプレートにindex aliasesを含めることができます。
Python
resp = client.cluster.put_component_template(
name="template_1",
template={
"settings": {
"number_of_shards": 1
},
"aliases": {
"alias1": {},
"alias2": {
"filter": {
"term": {
"user.id": "kimchy"
}
},
"routing": "shard-1"
},
"{index}-alias": {}
}
},
)
print(resp)
Ruby
response = client.cluster.put_component_template(
name: 'template_1',
body: {
template: {
settings: {
number_of_shards: 1
},
aliases: {
"alias1": {},
"alias2": {
filter: {
term: {
'user.id' => 'kimchy'
}
},
routing: 'shard-1'
},
"{index}-alias": {}
}
}
}
)
puts response
Js
const response = await client.cluster.putComponentTemplate({
name: "template_1",
template: {
settings: {
number_of_shards: 1,
},
aliases: {
alias1: {},
alias2: {
filter: {
term: {
"user.id": "kimchy",
},
},
routing: "shard-1",
},
"{index}-alias": {},
},
},
});
console.log(response);
コンソール
PUT _component_template/template_1
{
"template": {
"settings" : {
"number_of_shards" : 1
},
"aliases" : {
"alias1" : {},
"alias2" : {
"filter" : {
"term" : {"user.id" : "kimchy" }
},
"routing" : "shard-1"
},
"{index}-alias" : {}
}
}
}
エイリアス名の{index} プレースホルダーは、インデックス作成中にテンプレートが適用される実際のインデックス名に置き換えられます。 |
コンポーネントテンプレートの適用
コンポーネントテンプレートをデータストリームまたはインデックスに直接適用することはできません。適用されるには、コンポーネントテンプレートはインデックステンプレートのcomposed_of
リストに含まれている必要があります。インデックステンプレートを参照してください。
コンポーネントテンプレートのバージョン管理
コンポーネントテンプレートにバージョン番号を追加するには、version
パラメータを使用できます。外部システムは、これらのバージョン番号を使用してテンプレート管理を簡素化できます。
`````version`````を解除するには、テンプレートを置き換え、指定しないでください。
#### Python
``````python
resp = client.cluster.put_component_template(
name="template_1",
template={
"settings": {
"number_of_shards": 1
}
},
version=123,
)
print(resp)
`
Ruby
response = client.cluster.put_component_template(
name: 'template_1',
body: {
template: {
settings: {
number_of_shards: 1
}
},
version: 123
}
)
puts response
Js
const response = await client.cluster.putComponentTemplate({
name: "template_1",
template: {
settings: {
number_of_shards: 1,
},
},
version: 123,
});
console.log(response);
コンソール
PUT /_component_template/template_1
{
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"version": 123
}
version
を確認するには、get component template APIを使用できます。
コンポーネントテンプレートのメタデータ
`````_meta`````パラメータはオプションであり、Elasticsearchによって自動的に生成または使用されることはありません。
`````_meta`````を解除するには、テンプレートを置き換え、指定しないでください。
#### Python
``````python
resp = client.cluster.put_component_template(
name="template_1",
template={
"settings": {
"number_of_shards": 1
}
},
meta={
"description": "set number of shards to one",
"serialization": {
"class": "MyComponentTemplate",
"id": 10
}
},
)
print(resp)
`
Ruby
response = client.cluster.put_component_template(
name: 'template_1',
body: {
template: {
settings: {
number_of_shards: 1
}
},
_meta: {
description: 'set number of shards to one',
serialization: {
class: 'MyComponentTemplate',
id: 10
}
}
}
)
puts response
Js
const response = await client.cluster.putComponentTemplate({
name: "template_1",
template: {
settings: {
number_of_shards: 1,
},
},
_meta: {
description: "set number of shards to one",
serialization: {
class: "MyComponentTemplate",
id: 10,
},
},
});
console.log(response);
コンソール
PUT /_component_template/template_1
{
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"_meta": {
"description": "set number of shards to one",
"serialization": {
"class": "MyComponentTemplate",
"id": 10
}
}
}
_meta
を確認するには、get component template APIを使用できます。