アップグレードモードAPIの設定

機械学習インデックスのアップグレードの準備をするために、クラスター全体のupgrade_mode設定を行います。

リクエスト

POST _ml/set_upgrade_mode

前提条件

  1. ## 説明
  2. クラスターをアップグレードする際、特定の状況ではノードを再起動し、機械学習インデックスを再インデックス化する必要があります。そのような状況では、実行中の機械学習ジョブがない必要があります。機械学習ジョブを閉じてアップグレードを行い、その後すべてのジョブを再度開くことができます。あるいは、このAPIを使用して、ジョブおよびデータフィードに関連するタスクを一時的に停止し、新しいジョブが開かれるのを防ぐことができます。また、機械学習インデックスの再インデックス化を必要としないアップグレード中にもこのAPIを使用できますが、その場合はジョブを停止する必要はありません。
  3. 詳細については、[Elastic Stackのアップグレード](https://www.elastic.co/guide/en/elastic-stack/8.15/upgrading-elastic-stack.html)を参照してください。
  4. `````enabled=true`````このAPIは、すべてのジョブおよびデータフィードタスクを一時的に停止し、新しいジョブおよびデータフィードタスクの開始を禁止します。
  5. その後、enabledパラメータをfalseに設定してAPIを呼び出すことで、機械学習ジョブとデータフィードが希望の状態に戻ります。
  6. `````upgrade_mode`````設定の現在の値は、[機械学習情報APIを取得する](/read/elasticsearch-8-15/a5f84bbdc1ee95db.md)を使用して確認できます。
  7. `````upgrade_mode`````設定が`````true`````の間は、新しい機械学習ジョブを開くことはできません。
  8. ## クエリパラメータ
  9. - `````enabled
  • (オプション、Boolean) trueのとき、upgrade_modeを有効にします。デフォルトはfalseです。
  • timeout
  • (オプション、時間) リクエストが完了するまでの待機時間。デフォルト値は30秒です。

以下の例は、クラスターのupgrade_modeを有効にします:

Python

  1. resp = client.ml.set_upgrade_mode(
  2. enabled=True,
  3. timeout="10m",
  4. )
  5. print(resp)

Ruby

  1. response = client.ml.set_upgrade_mode(
  2. enabled: true,
  3. timeout: '10m'
  4. )
  5. puts response

Js

  1. const response = await client.ml.setUpgradeMode({
  2. enabled: "true",
  3. timeout: "10m",
  4. });
  5. console.log(response);

コンソール

  1. POST _ml/set_upgrade_mode?enabled=true&timeout=10m

呼び出しが成功すると、確認応答が返されます。例えば:

コンソール-結果

  1. {
  2. "acknowledged": true
  3. }

確認応答は、すべての機械学習ジョブとデータフィードが機械学習内部インデックスへの書き込みを完了するまで返されません。これは、失敗を引き起こすことなく内部インデックスを再インデックス化するのが安全であることを意味します。すべての書き込みが完了することを確認するために、再インデックス化する前に確認応答を待つ必要があります。

アップグレードが完了したら、機械学習ジョブが再び実行されるようにupgrade_modefalseに設定する必要があります。例えば:

Python

  1. resp = client.ml.set_upgrade_mode(
  2. enabled=False,
  3. timeout="10m",
  4. )
  5. print(resp)

Ruby

  1. response = client.ml.set_upgrade_mode(
  2. enabled: false,
  3. timeout: '10m'
  4. )
  5. puts response

Js

  1. const response = await client.ml.setUpgradeMode({
  2. enabled: "false",
  3. timeout: "10m",
  4. });
  5. console.log(response);

コンソール

  1. POST _ml/set_upgrade_mode?enabled=false&timeout=10m