クラスタ更新設定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

  1. resp = client.cluster.put_settings(
  2. persistent={
  3. "indices.recovery.max_bytes_per_sec": "50mb"
  4. },
  5. )
  6. print(resp)

Ruby

  1. response = client.cluster.put_settings(
  2. body: {
  3. persistent: {
  4. 'indices.recovery.max_bytes_per_sec' => '50mb'
  5. }
  6. }
  7. )
  8. puts response

Js

  1. const response = await client.cluster.putSettings({
  2. persistent: {
  3. "indices.recovery.max_bytes_per_sec": "50mb",
  4. },
  5. });
  6. console.log(response);

コンソール

  1. PUT /_cluster/settings
  2. {
  3. "persistent" : {
  4. "indices.recovery.max_bytes_per_sec" : "50mb"
  5. }
  6. }

一時的な更新の例:

もはや一時的クラスタ設定の使用を推奨しません。代わりに永続的クラスタ設定を使用してください。クラスタが不安定になると、一時的設定が予期せずクリアされ、望ましくないクラスタ構成になる可能性があります。一時的設定移行ガイドを参照してください。

Python

  1. resp = client.cluster.put_settings(
  2. flat_settings=True,
  3. transient={
  4. "indices.recovery.max_bytes_per_sec": "20mb"
  5. },
  6. )
  7. print(resp)

Ruby

  1. response = client.cluster.put_settings(
  2. flat_settings: true,
  3. body: {
  4. transient: {
  5. 'indices.recovery.max_bytes_per_sec' => '20mb'
  6. }
  7. }
  8. )
  9. puts response

Js

  1. const response = await client.cluster.putSettings({
  2. flat_settings: "true",
  3. transient: {
  4. "indices.recovery.max_bytes_per_sec": "20mb",
  5. },
  6. });
  7. console.log(response);

コンソール

  1. PUT /_cluster/settings?flat_settings=true
  2. {
  3. "transient" : {
  4. "indices.recovery.max_bytes_per_sec" : "20mb"
  5. }
  6. }

更新への応答は、次の一時的な例への応答のように、変更された設定を返します:

コンソール-結果

  1. {
  2. ...
  3. "persistent" : { },
  4. "transient" : {
  5. "indices.recovery.max_bytes_per_sec" : "20mb"
  6. }
  7. }

この例は設定をリセットします:

Python

  1. resp = client.cluster.put_settings(
  2. transient={
  3. "indices.recovery.max_bytes_per_sec": None
  4. },
  5. )
  6. print(resp)

Ruby

  1. response = client.cluster.put_settings(
  2. body: {
  3. transient: {
  4. 'indices.recovery.max_bytes_per_sec' => nil
  5. }
  6. }
  7. )
  8. puts response

Js

  1. const response = await client.cluster.putSettings({
  2. transient: {
  3. "indices.recovery.max_bytes_per_sec": null,
  4. },
  5. });
  6. console.log(response);

コンソール

  1. PUT /_cluster/settings
  2. {
  3. "transient" : {
  4. "indices.recovery.max_bytes_per_sec" : null
  5. }
  6. }

応答にはリセットされた設定は含まれません:

コンソール-結果

  1. {
  2. ...
  3. "persistent" : {},
  4. "transient" : {}
  5. }

ワイルドカードを使用して設定をリセットすることもできます。たとえば、すべての動的indices.recovery設定をリセットするには:

Python

  1. resp = client.cluster.put_settings(
  2. transient={
  3. "indices.recovery.*": None
  4. },
  5. )
  6. print(resp)

Ruby

  1. response = client.cluster.put_settings(
  2. body: {
  3. transient: {
  4. "indices.recovery.*": nil
  5. }
  6. }
  7. )
  8. puts response

Js

  1. const response = await client.cluster.putSettings({
  2. transient: {
  3. "indices.recovery.*": null,
  4. },
  5. });
  6. console.log(response);

コンソール

  1. PUT /_cluster/settings
  2. {
  3. "transient" : {
  4. "indices.recovery.*" : null
  5. }
  6. }