コンポーネントテンプレートAPIの作成または更新

コンポーネントテンプレートを作成または更新します。コンポーネントテンプレートは、インデックスのmappingssettings、およびaliasesを指定するindex templatesを構築するための基本要素です。

コンソール

  1. PUT _component_template/template_1
  2. {
  3. "template": {
  4. "settings": {
  5. "number_of_shards": 1
  6. },
  7. "mappings": {
  8. "_source": {
  9. "enabled": false
  10. },
  11. "properties": {
  12. "host_name": {
  13. "type": "keyword"
  14. },
  15. "created_at": {
  16. "type": "date"
  17. }
  18. }
  19. }
  20. }
  21. }

リクエスト

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
  • (必須、オブジェクト) これは適用されるテンプレートであり、mappingssettings、またはaliasesの構成をオプションで含めることができます。
    1. - `````aliases
    • (オプション、オブジェクトのオブジェクト) 追加するエイリアス。
      インデックステンプレートにdata_streamオブジェクトが含まれている場合、これらはデータストリームエイリアスです。そうでない場合、これらはインデックスエイリアスです。データストリームエイリアスは、index_routingrouting、およびsearch_routingオプションを無視します。
      1. - `````<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

  1. resp = client.cluster.put_component_template(
  2. name="template_1",
  3. template={
  4. "settings": {
  5. "number_of_shards": 1
  6. },
  7. "aliases": {
  8. "alias1": {},
  9. "alias2": {
  10. "filter": {
  11. "term": {
  12. "user.id": "kimchy"
  13. }
  14. },
  15. "routing": "shard-1"
  16. },
  17. "{index}-alias": {}
  18. }
  19. },
  20. )
  21. print(resp)

Ruby

  1. response = client.cluster.put_component_template(
  2. name: 'template_1',
  3. body: {
  4. template: {
  5. settings: {
  6. number_of_shards: 1
  7. },
  8. aliases: {
  9. "alias1": {},
  10. "alias2": {
  11. filter: {
  12. term: {
  13. 'user.id' => 'kimchy'
  14. }
  15. },
  16. routing: 'shard-1'
  17. },
  18. "{index}-alias": {}
  19. }
  20. }
  21. }
  22. )
  23. puts response

Js

  1. const response = await client.cluster.putComponentTemplate({
  2. name: "template_1",
  3. template: {
  4. settings: {
  5. number_of_shards: 1,
  6. },
  7. aliases: {
  8. alias1: {},
  9. alias2: {
  10. filter: {
  11. term: {
  12. "user.id": "kimchy",
  13. },
  14. },
  15. routing: "shard-1",
  16. },
  17. "{index}-alias": {},
  18. },
  19. },
  20. });
  21. console.log(response);

コンソール

  1. PUT _component_template/template_1
  2. {
  3. "template": {
  4. "settings" : {
  5. "number_of_shards" : 1
  6. },
  7. "aliases" : {
  8. "alias1" : {},
  9. "alias2" : {
  10. "filter" : {
  11. "term" : {"user.id" : "kimchy" }
  12. },
  13. "routing" : "shard-1"
  14. },
  15. "{index}-alias" : {}
  16. }
  17. }
  18. }
エイリアス名の{index}プレースホルダーは、インデックス作成中にテンプレートが適用される実際のインデックス名に置き換えられます。

コンポーネントテンプレートの適用

コンポーネントテンプレートをデータストリームまたはインデックスに直接適用することはできません。適用されるには、コンポーネントテンプレートはインデックステンプレートのcomposed_ofリストに含まれている必要があります。インデックステンプレートを参照してください。

コンポーネントテンプレートのバージョン管理

コンポーネントテンプレートにバージョン番号を追加するには、versionパラメータを使用できます。外部システムは、これらのバージョン番号を使用してテンプレート管理を簡素化できます。

  1. `````version`````を解除するには、テンプレートを置き換え、指定しないでください。
  2. #### Python
  3. ``````python
  4. resp = client.cluster.put_component_template(
  5. name="template_1",
  6. template={
  7. "settings": {
  8. "number_of_shards": 1
  9. }
  10. },
  11. version=123,
  12. )
  13. print(resp)
  14. `

Ruby

  1. response = client.cluster.put_component_template(
  2. name: 'template_1',
  3. body: {
  4. template: {
  5. settings: {
  6. number_of_shards: 1
  7. }
  8. },
  9. version: 123
  10. }
  11. )
  12. puts response

Js

  1. const response = await client.cluster.putComponentTemplate({
  2. name: "template_1",
  3. template: {
  4. settings: {
  5. number_of_shards: 1,
  6. },
  7. },
  8. version: 123,
  9. });
  10. console.log(response);

コンソール

  1. PUT /_component_template/template_1
  2. {
  3. "template": {
  4. "settings" : {
  5. "number_of_shards" : 1
  6. }
  7. },
  8. "version": 123
  9. }

versionを確認するには、get component template APIを使用できます。

コンポーネントテンプレートのメタデータ

  1. `````_meta`````パラメータはオプションであり、Elasticsearchによって自動的に生成または使用されることはありません。
  2. `````_meta`````を解除するには、テンプレートを置き換え、指定しないでください。
  3. #### Python
  4. ``````python
  5. resp = client.cluster.put_component_template(
  6. name="template_1",
  7. template={
  8. "settings": {
  9. "number_of_shards": 1
  10. }
  11. },
  12. meta={
  13. "description": "set number of shards to one",
  14. "serialization": {
  15. "class": "MyComponentTemplate",
  16. "id": 10
  17. }
  18. },
  19. )
  20. print(resp)
  21. `

Ruby

  1. response = client.cluster.put_component_template(
  2. name: 'template_1',
  3. body: {
  4. template: {
  5. settings: {
  6. number_of_shards: 1
  7. }
  8. },
  9. _meta: {
  10. description: 'set number of shards to one',
  11. serialization: {
  12. class: 'MyComponentTemplate',
  13. id: 10
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.cluster.putComponentTemplate({
  2. name: "template_1",
  3. template: {
  4. settings: {
  5. number_of_shards: 1,
  6. },
  7. },
  8. _meta: {
  9. description: "set number of shards to one",
  10. serialization: {
  11. class: "MyComponentTemplate",
  12. id: 10,
  13. },
  14. },
  15. });
  16. console.log(response);

コンソール

  1. PUT /_component_template/template_1
  2. {
  3. "template": {
  4. "settings" : {
  5. "number_of_shards" : 1
  6. }
  7. },
  8. "_meta": {
  9. "description": "set number of shards to one",
  10. "serialization": {
  11. "class": "MyComponentTemplate",
  12. "id": 10
  13. }
  14. }
  15. }

_metaを確認するには、get component template APIを使用できます。