インデックステンプレートAPIのシミュレーション

特定の インデックステンプレート に適用されるインデックス設定を返します。

Python

  1. resp = client.indices.simulate_template(
  2. name="template_1",
  3. )
  4. print(resp)

Js

  1. const response = await client.indices.simulateTemplate({
  2. name: "template_1",
  3. });
  4. console.log(response);

コンソール

  1. POST /_index_template/_simulate/template_1

リクエスト

POST /_index_template/_simulate/<index-template>

前提条件

  • Elasticsearch のセキュリティ機能が有効になっている場合、この API を使用するには manage_index_templates または manage クラスター権限 が必要です。

パスパラメータ

  • <index-template>
  • (オプション、文字列) シミュレーションするインデックステンプレートの名前。テンプレート設定をクラスタに追加する前にテストするには、このパラメータを省略し、リクエストボディにテンプレート設定を指定します。

クエリパラメータ

  • create
  • (オプション、Boolean) true の場合、ボディに渡されたテンプレートは、同じインデックスパターンに一致する既存のテンプレートがない場合にのみ使用されます。false の場合、シミュレーションは最も優先度の高いテンプレートを使用します。いずれの場合も、テンプレートは永続的に追加または更新されることはありません; シミュレーションのためにのみ使用されます。デフォルトは false です。
  • master_timeout
  • (オプション、時間単位) マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • include_defaults
  • (オプション、Boolean) [プレビュー] の機能。この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。 . true の場合、レスポンスにすべてのデフォルト設定を返します。デフォルトは false です。

リクエストボディ

  • data_stream
  • (オプション、オブジェクト) このオブジェクトが含まれている場合、テンプレートはデータストリームとそのバックインデックスを作成するために使用されます。空のオブジェクトをサポートします。
    データストリームには、data_streamオブジェクトを持つ一致するインデックステンプレートが必要です。インデックステンプレートの作成を参照してください。
    1. - `````allow_custom_routing
    • (オプション、Boolean) trueの場合、データストリームはカスタムルーティングをサポートします。デフォルトはfalseです。
    • hidden
    • (オプション、Boolean) trueの場合、データストリームは非表示です。デフォルトはfalseです。
    • index_mode
    • (オプション、文字列) 作成するデータストリームのタイプ。有効な値はnull(通常のデータストリーム)とtime_series時系列データストリーム)です。
      time_seriesの場合、各バックインデックスにはindex.modeインデックス設定がtime_seriesになります。
  • index_patterns
  • (必須、文字列の配列) 作成中にデータストリームとインデックスの名前に一致するワイルドカード(*)式の配列。
    Elasticsearchには、いくつかの組み込みインデックステンプレートが含まれています。これらのテンプレートとの名前の衝突を避けるために、インデックスパターンの衝突を避けるを参照してください。
  • _meta
  • (オプション、オブジェクト) インデックステンプレートに関するオプションのユーザーメタデータ。任意の内容を持つことができます。このマップはElasticsearchによって自動的に生成されません。
  • priority
  • (オプション、整数) 新しいデータストリームまたはインデックスが作成されるときのインデックステンプレートの優先順位を決定します。最も優先度の高いインデックステンプレートが選択されます。優先順位が指定されていない場合、テンプレートは優先度0(最低優先度)のものとして扱われます。この数値はElasticsearchによって自動的に生成されません。
  • template
  • (オプション、オブジェクト) 適用されるテンプレート。aliasesmappings、または settings の設定を含めることができます。
    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によって自動的に生成されません。
  • deprecated
  • (オプション、boolean) このインデックステンプレートを非推奨としてマークします。非推奨のコンポーネントを使用する非推奨でないインデックステンプレートを作成または更新する際、Elasticsearchは非推奨警告を発します。

レスポンスボディ

  • overlapping
  • (配列) 指定されたテンプレートによって上書きされたテンプレート。
    overlapping のプロパティ
    • index_patterns
    • (配列) 上書きされたテンプレートが適用されるインデックスパターン。
    • name
    • (文字列) 上書きされたテンプレートの名前。
  • template
  • (オブジェクト) 一致するインデックスに適用される設定、マッピング、およびエイリアス。
    1. - `````aliases
    • (オプション、オブジェクトのオブジェクト) インデックスのエイリアス。インデックステンプレートに data_stream が含まれている場合、このパラメータはサポートされません。
      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
    • (オプション、インデックス設定オブジェクト) インデックスの構成オプション。 インデックス設定を参照してください。

既存のテンプレートのシミュレーション

以下の例は、構成テンプレートを作成し、シミュレーションします:

Python

  1. resp = client.cluster.put_component_template(
  2. name="ct1",
  3. template={
  4. "settings": {
  5. "index.number_of_shards": 2
  6. }
  7. },
  8. )
  9. print(resp)
  10. resp1 = client.cluster.put_component_template(
  11. name="ct2",
  12. template={
  13. "settings": {
  14. "index.number_of_replicas": 0
  15. },
  16. "mappings": {
  17. "properties": {
  18. "@timestamp": {
  19. "type": "date"
  20. }
  21. }
  22. }
  23. },
  24. )
  25. print(resp1)
  26. resp2 = client.indices.put_index_template(
  27. name="final-template",
  28. index_patterns=[
  29. "my-index-*"
  30. ],
  31. composed_of=[
  32. "ct1",
  33. "ct2"
  34. ],
  35. priority=5,
  36. )
  37. print(resp2)
  38. resp3 = client.indices.simulate_template(
  39. name="final-template",
  40. )
  41. print(resp3)

Ruby

  1. response = client.cluster.put_component_template(
  2. name: 'ct1',
  3. body: {
  4. template: {
  5. settings: {
  6. 'index.number_of_shards' => 2
  7. }
  8. }
  9. }
  10. )
  11. puts response
  12. response = client.cluster.put_component_template(
  13. name: 'ct2',
  14. body: {
  15. template: {
  16. settings: {
  17. 'index.number_of_replicas' => 0
  18. },
  19. mappings: {
  20. properties: {
  21. "@timestamp": {
  22. type: 'date'
  23. }
  24. }
  25. }
  26. }
  27. }
  28. )
  29. puts response
  30. response = client.indices.put_index_template(
  31. name: 'final-template',
  32. body: {
  33. index_patterns: [
  34. 'my-index-*'
  35. ],
  36. composed_of: [
  37. 'ct1',
  38. 'ct2'
  39. ],
  40. priority: 5
  41. }
  42. )
  43. puts response
  44. response = client.indices.simulate_template(
  45. name: 'final-template'
  46. )
  47. puts response

Js

  1. const response = await client.cluster.putComponentTemplate({
  2. name: "ct1",
  3. template: {
  4. settings: {
  5. "index.number_of_shards": 2,
  6. },
  7. },
  8. });
  9. console.log(response);
  10. const response1 = await client.cluster.putComponentTemplate({
  11. name: "ct2",
  12. template: {
  13. settings: {
  14. "index.number_of_replicas": 0,
  15. },
  16. mappings: {
  17. properties: {
  18. "@timestamp": {
  19. type: "date",
  20. },
  21. },
  22. },
  23. },
  24. });
  25. console.log(response1);
  26. const response2 = await client.indices.putIndexTemplate({
  27. name: "final-template",
  28. index_patterns: ["my-index-*"],
  29. composed_of: ["ct1", "ct2"],
  30. priority: 5,
  31. });
  32. console.log(response2);
  33. const response3 = await client.indices.simulateTemplate({
  34. name: "final-template",
  35. });
  36. console.log(response3);

コンソール

  1. PUT /_component_template/ct1
  2. {
  3. "template": {
  4. "settings": {
  5. "index.number_of_shards": 2
  6. }
  7. }
  8. }
  9. PUT /_component_template/ct2
  10. {
  11. "template": {
  12. "settings": {
  13. "index.number_of_replicas": 0
  14. },
  15. "mappings": {
  16. "properties": {
  17. "@timestamp": {
  18. "type": "date"
  19. }
  20. }
  21. }
  22. }
  23. }
  24. PUT /_index_template/final-template
  25. {
  26. "index_patterns": ["my-index-*"],
  27. "composed_of": ["ct1", "ct2"],
  28. "priority": 5
  29. }
  30. POST /_index_template/_simulate/final-template
シャード数を 2 に設定するコンポーネントテンプレート (ct1) を作成
レプリカの数を0に設定し、マッピングを定義するコンポーネントテンプレート (ct2) を作成
コンポーネントテンプレートを使用するインデックステンプレート (final-template) を作成
final-template によって適用された設定を表示

レスポンスは final-template によって適用されたインデックス設定、マッピング、およびエイリアスを示します:

コンソール-結果

  1. {
  2. "template" : {
  3. "settings" : {
  4. "index" : {
  5. "number_of_shards" : "2",
  6. "number_of_replicas" : "0",
  7. "routing" : {
  8. "allocation" : {
  9. "include" : {
  10. "_tier_preference" : "data_content"
  11. }
  12. }
  13. }
  14. }
  15. },
  16. "mappings" : {
  17. "properties" : {
  18. "@timestamp" : {
  19. "type" : "date"
  20. }
  21. }
  22. },
  23. "aliases" : { }
  24. },
  25. "overlapping" : [ ]
  26. }
ct1 からのシャードの数
ct2 からのレプリカの数
ct1 からのマッピング

任意のテンプレート設定のシミュレーション

テンプレートをクラスタに追加する前に、どの設定が適用されるかを確認するには、リクエストボディにテンプレート設定を渡すことができます。指定されたテンプレートは、既存のテンプレートよりも優先度が高い場合にシミュレーションに使用されます。

Python

  1. resp = client.indices.simulate_template(
  2. index_patterns=[
  3. "my-index-*"
  4. ],
  5. composed_of=[
  6. "ct2"
  7. ],
  8. priority=10,
  9. template={
  10. "settings": {
  11. "index.number_of_replicas": 1
  12. }
  13. },
  14. )
  15. print(resp)

Ruby

  1. response = client.indices.simulate_template(
  2. body: {
  3. index_patterns: [
  4. 'my-index-*'
  5. ],
  6. composed_of: [
  7. 'ct2'
  8. ],
  9. priority: 10,
  10. template: {
  11. settings: {
  12. 'index.number_of_replicas' => 1
  13. }
  14. }
  15. }
  16. )
  17. puts response

Js

  1. const response = await client.indices.simulateTemplate({
  2. index_patterns: ["my-index-*"],
  3. composed_of: ["ct2"],
  4. priority: 10,
  5. template: {
  6. settings: {
  7. "index.number_of_replicas": 1,
  8. },
  9. },
  10. });
  11. console.log(response);

コンソール

  1. POST /_index_template/_simulate
  2. {
  3. "index_patterns": ["my-index-*"],
  4. "composed_of": ["ct2"],
  5. "priority": 10,
  6. "template": {
  7. "settings": {
  8. "index.number_of_replicas": 1
  9. }
  10. }
  11. }

レスポンスは、優先度の低い重複するテンプレートを示します。

コンソール-結果

  1. {
  2. "template" : {
  3. "settings" : {
  4. "index" : {
  5. "number_of_replicas" : "1",
  6. "routing" : {
  7. "allocation" : {
  8. "include" : {
  9. "_tier_preference" : "data_content"
  10. }
  11. }
  12. }
  13. }
  14. },
  15. "mappings" : {
  16. "properties" : {
  17. "@timestamp" : {
  18. "type" : "date"
  19. }
  20. }
  21. },
  22. "aliases" : { }
  23. },
  24. "overlapping" : [
  25. {
  26. "name" : "final-template",
  27. "index_patterns" : [
  28. "my-index-*"
  29. ]
  30. }
  31. ]
  32. }