マルチコンポーネントテンプレートのシミュレーション

テンプレートは複数のコンポーネントテンプレートだけでなく、インデックステンプレート自体からも構成できるため、結果として得られるインデックス設定を決定するための2つのシミュレーションAPIがあります。

特定のインデックス名に適用される設定をシミュレートするには:

Python

  1. resp = client.indices.simulate_index_template(
  2. name="my-index-000001",
  3. )
  4. print(resp)

Js

  1. const response = await client.indices.simulateIndexTemplate({
  2. name: "my-index-000001",
  3. });
  4. console.log(response);

コンソール

  1. POST /_index_template/_simulate_index/my-index-000001

既存のテンプレートから適用される設定をシミュレートするには:

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

シミュレートリクエストでテンプレート定義を指定することもできます。これにより、新しいテンプレートを追加する前に、設定が期待通りに適用されることを確認できます。

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.simulate_template(
  27. index_patterns=[
  28. "my*"
  29. ],
  30. template={
  31. "settings": {
  32. "index.number_of_shards": 3
  33. }
  34. },
  35. composed_of=[
  36. "ct1",
  37. "ct2"
  38. ],
  39. )
  40. print(resp2)

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.simulate_template(
  31. body: {
  32. index_patterns: [
  33. 'my*'
  34. ],
  35. template: {
  36. settings: {
  37. 'index.number_of_shards' => 3
  38. }
  39. },
  40. composed_of: [
  41. 'ct1',
  42. 'ct2'
  43. ]
  44. }
  45. )
  46. 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.simulateTemplate({
  27. index_patterns: ["my*"],
  28. template: {
  29. settings: {
  30. "index.number_of_shards": 3,
  31. },
  32. },
  33. composed_of: ["ct1", "ct2"],
  34. });
  35. console.log(response2);

コンソール

  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. POST /_index_template/_simulate
  25. {
  26. "index_patterns": ["my*"],
  27. "template": {
  28. "settings" : {
  29. "index.number_of_shards" : 3
  30. }
  31. },
  32. "composed_of": ["ct1", "ct2"]
  33. }

レスポンスには、マッチするインデックスに適用される設定、マッピング、およびエイリアスが表示され、シミュレートされたテンプレート本体または優先度の高いテンプレートによって上書きされる構成を持つ重複するテンプレートが表示されます。

コンソール-結果

  1. {
  2. "template" : {
  3. "settings" : {
  4. "index" : {
  5. "number_of_shards" : "3",
  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. {
  27. "name" : "template_1",
  28. "index_patterns" : [
  29. "my*"
  30. ]
  31. }
  32. ]
  33. }
シミュレートされたテンプレート本体からのシャードの数
@timestamp コンポーネントテンプレートから継承されたフィールド
マッチしたが優先度が低い重複するテンプレート