クラスタ更新設定API
動的クラスタ設定を構成します。
リクエスト
PUT /_cluster/settings
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには
manage
クラスタ特権を持っている必要があります。
説明
クラスタ更新設定APIを使用して、稼働中のクラスタの動的設定を構成および更新できます。また、elasticsearch.yml
を使用して、起動していないまたはシャットダウンされたノードでローカルに動的設定を構成することもできます。
クラスタ更新設定APIを使用して行われた更新は、永続的であり、クラスタの再起動を通じて適用されるか、一時的であり、クラスタの再起動後にリセットされます。また、APIを使用してnull
値を割り当てることで、一時的または永続的な設定をリセットすることもできます。
同じ設定を複数の方法で構成した場合、Elasticsearchは次の優先順位の順序で設定を適用します:
- 1. 一時的設定
- 2. 永続的設定
- 3.
elasticsearch.yml
設定 - 4. デフォルト設定値
たとえば、一時的設定を適用して永続的設定またはelasticsearch.yml
設定を上書きすることができます。ただし、elasticsearch.yml
設定の変更は、定義された一時的または永続的設定を上書きすることはありません。
Elasticsearch Serviceを使用している場合は、ユーザー設定機能を使用してすべてのクラスタ設定を構成します。この方法では、Elasticsearch Serviceがクラスタを壊す可能性のある安全でない設定を自動的に拒否します。
独自のハードウェアでElasticsearchを実行している場合は、クラスタ更新設定APIを使用して動的クラスタ設定を構成します。静的クラスタ設定およびノード設定にはelasticsearch.yml
のみを使用してください。APIは再起動を必要とせず、すべてのノードで設定の値が同じであることを保証します。
もはや一時的クラスタ設定の使用を推奨しません。代わりに永続的クラスタ設定を使用してください。クラスタが不安定になると、一時的設定が予期せずクリアされ、望ましくないクラスタ構成になる可能性があります。一時的設定移行ガイドを参照してください。
クエリパラメータ
flat_settings
- (オプション、ブール値)
true
の場合、設定をフラット形式で返します。デフォルトはfalse
です。 include_defaults
- (オプション、ブール値)
true
の場合、すべてのデフォルトクラスタ設定を返します。デフォルトはfalse
です。 master_timeout
- (オプション、時間単位) マスターノードを待つ期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。 timeout
- (オプション、時間単位) クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待つ期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。
例
永続的な更新の例:
Python
resp = client.cluster.put_settings(
persistent={
"indices.recovery.max_bytes_per_sec": "50mb"
},
)
print(resp)
Ruby
response = client.cluster.put_settings(
body: {
persistent: {
'indices.recovery.max_bytes_per_sec' => '50mb'
}
}
)
puts response
Js
const response = await client.cluster.putSettings({
persistent: {
"indices.recovery.max_bytes_per_sec": "50mb",
},
});
console.log(response);
コンソール
PUT /_cluster/settings
{
"persistent" : {
"indices.recovery.max_bytes_per_sec" : "50mb"
}
}
一時的な更新の例:
もはや一時的クラスタ設定の使用を推奨しません。代わりに永続的クラスタ設定を使用してください。クラスタが不安定になると、一時的設定が予期せずクリアされ、望ましくないクラスタ構成になる可能性があります。一時的設定移行ガイドを参照してください。
Python
resp = client.cluster.put_settings(
flat_settings=True,
transient={
"indices.recovery.max_bytes_per_sec": "20mb"
},
)
print(resp)
Ruby
response = client.cluster.put_settings(
flat_settings: true,
body: {
transient: {
'indices.recovery.max_bytes_per_sec' => '20mb'
}
}
)
puts response
Js
const response = await client.cluster.putSettings({
flat_settings: "true",
transient: {
"indices.recovery.max_bytes_per_sec": "20mb",
},
});
console.log(response);
コンソール
PUT /_cluster/settings?flat_settings=true
{
"transient" : {
"indices.recovery.max_bytes_per_sec" : "20mb"
}
}
更新への応答は、次の一時的な例への応答のように、変更された設定を返します:
コンソール-結果
{
...
"persistent" : { },
"transient" : {
"indices.recovery.max_bytes_per_sec" : "20mb"
}
}
この例は設定をリセットします:
Python
resp = client.cluster.put_settings(
transient={
"indices.recovery.max_bytes_per_sec": None
},
)
print(resp)
Ruby
response = client.cluster.put_settings(
body: {
transient: {
'indices.recovery.max_bytes_per_sec' => nil
}
}
)
puts response
Js
const response = await client.cluster.putSettings({
transient: {
"indices.recovery.max_bytes_per_sec": null,
},
});
console.log(response);
コンソール
PUT /_cluster/settings
{
"transient" : {
"indices.recovery.max_bytes_per_sec" : null
}
}
コンソール-結果
{
...
"persistent" : {},
"transient" : {}
}
ワイルドカードを使用して設定をリセットすることもできます。たとえば、すべての動的indices.recovery
設定をリセットするには:
Python
resp = client.cluster.put_settings(
transient={
"indices.recovery.*": None
},
)
print(resp)
Ruby
response = client.cluster.put_settings(
body: {
transient: {
"indices.recovery.*": nil
}
}
)
puts response
Js
const response = await client.cluster.putSettings({
transient: {
"indices.recovery.*": null,
},
});
console.log(response);
コンソール
PUT /_cluster/settings
{
"transient" : {
"indices.recovery.*" : null
}
}