インデックステンプレートAPIのシミュレーション
特定の インデックステンプレート に適用されるインデックス設定を返します。
Python
resp = client.indices.simulate_template(
name="template_1",
)
print(resp)
Js
const response = await client.indices.simulateTemplate({
name: "template_1",
});
console.log(response);
コンソール
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
オブジェクトを持つ一致するインデックステンプレートが必要です。インデックステンプレートの作成を参照してください。- `````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
- (オプション、オブジェクト) 適用されるテンプレート。
aliases
、mappings
、またはsettings
の設定を含めることができます。- `````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によって自動的に生成されません。
deprecated
- (オプション、boolean) このインデックステンプレートを非推奨としてマークします。非推奨のコンポーネントを使用する非推奨でないインデックステンプレートを作成または更新する際、Elasticsearchは非推奨警告を発します。
レスポンスボディ
overlapping
- (配列) 指定されたテンプレートによって上書きされたテンプレート。
overlapping
のプロパティindex_patterns
- (配列) 上書きされたテンプレートが適用されるインデックスパターン。
name
- (文字列) 上書きされたテンプレートの名前。
template
- (オブジェクト) 一致するインデックスに適用される設定、マッピング、およびエイリアス。
- `````aliases
- (オプション、オブジェクトのオブジェクト) インデックスのエイリアス。インデックステンプレートに
data_stream
が含まれている場合、このパラメータはサポートされません。- `````<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
resp = client.cluster.put_component_template(
name="ct1",
template={
"settings": {
"index.number_of_shards": 2
}
},
)
print(resp)
resp1 = client.cluster.put_component_template(
name="ct2",
template={
"settings": {
"index.number_of_replicas": 0
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
},
)
print(resp1)
resp2 = client.indices.put_index_template(
name="final-template",
index_patterns=[
"my-index-*"
],
composed_of=[
"ct1",
"ct2"
],
priority=5,
)
print(resp2)
resp3 = client.indices.simulate_template(
name="final-template",
)
print(resp3)
Ruby
response = client.cluster.put_component_template(
name: 'ct1',
body: {
template: {
settings: {
'index.number_of_shards' => 2
}
}
}
)
puts response
response = client.cluster.put_component_template(
name: 'ct2',
body: {
template: {
settings: {
'index.number_of_replicas' => 0
},
mappings: {
properties: {
"@timestamp": {
type: 'date'
}
}
}
}
}
)
puts response
response = client.indices.put_index_template(
name: 'final-template',
body: {
index_patterns: [
'my-index-*'
],
composed_of: [
'ct1',
'ct2'
],
priority: 5
}
)
puts response
response = client.indices.simulate_template(
name: 'final-template'
)
puts response
Js
const response = await client.cluster.putComponentTemplate({
name: "ct1",
template: {
settings: {
"index.number_of_shards": 2,
},
},
});
console.log(response);
const response1 = await client.cluster.putComponentTemplate({
name: "ct2",
template: {
settings: {
"index.number_of_replicas": 0,
},
mappings: {
properties: {
"@timestamp": {
type: "date",
},
},
},
},
});
console.log(response1);
const response2 = await client.indices.putIndexTemplate({
name: "final-template",
index_patterns: ["my-index-*"],
composed_of: ["ct1", "ct2"],
priority: 5,
});
console.log(response2);
const response3 = await client.indices.simulateTemplate({
name: "final-template",
});
console.log(response3);
コンソール
PUT /_component_template/ct1
{
"template": {
"settings": {
"index.number_of_shards": 2
}
}
}
PUT /_component_template/ct2
{
"template": {
"settings": {
"index.number_of_replicas": 0
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
}
}
PUT /_index_template/final-template
{
"index_patterns": ["my-index-*"],
"composed_of": ["ct1", "ct2"],
"priority": 5
}
POST /_index_template/_simulate/final-template
シャード数を 2 に設定するコンポーネントテンプレート (ct1 ) を作成 |
|
レプリカの数を0に設定し、マッピングを定義するコンポーネントテンプレート (ct2 ) を作成 |
|
コンポーネントテンプレートを使用するインデックステンプレート (final-template ) を作成 |
|
final-template によって適用された設定を表示 |
レスポンスは final-template
によって適用されたインデックス設定、マッピング、およびエイリアスを示します:
コンソール-結果
{
"template" : {
"settings" : {
"index" : {
"number_of_shards" : "2",
"number_of_replicas" : "0",
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
}
}
},
"mappings" : {
"properties" : {
"@timestamp" : {
"type" : "date"
}
}
},
"aliases" : { }
},
"overlapping" : [ ]
}
ct1 からのシャードの数 |
|
ct2 からのレプリカの数 |
|
ct1 からのマッピング |
任意のテンプレート設定のシミュレーション
テンプレートをクラスタに追加する前に、どの設定が適用されるかを確認するには、リクエストボディにテンプレート設定を渡すことができます。指定されたテンプレートは、既存のテンプレートよりも優先度が高い場合にシミュレーションに使用されます。
Python
resp = client.indices.simulate_template(
index_patterns=[
"my-index-*"
],
composed_of=[
"ct2"
],
priority=10,
template={
"settings": {
"index.number_of_replicas": 1
}
},
)
print(resp)
Ruby
response = client.indices.simulate_template(
body: {
index_patterns: [
'my-index-*'
],
composed_of: [
'ct2'
],
priority: 10,
template: {
settings: {
'index.number_of_replicas' => 1
}
}
}
)
puts response
Js
const response = await client.indices.simulateTemplate({
index_patterns: ["my-index-*"],
composed_of: ["ct2"],
priority: 10,
template: {
settings: {
"index.number_of_replicas": 1,
},
},
});
console.log(response);
コンソール
POST /_index_template/_simulate
{
"index_patterns": ["my-index-*"],
"composed_of": ["ct2"],
"priority": 10,
"template": {
"settings": {
"index.number_of_replicas": 1
}
}
}
コンソール-結果
{
"template" : {
"settings" : {
"index" : {
"number_of_replicas" : "1",
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
}
}
},
"mappings" : {
"properties" : {
"@timestamp" : {
"type" : "date"
}
}
},
"aliases" : { }
},
"overlapping" : [
{
"name" : "final-template",
"index_patterns" : [
"my-index-*"
]
}
]
}