Upgrade model snapshots API

edit

Upgrades an anomaly detection model snapshot to the latest major version.

From Elasticsearch 8.10.0, a new version number is used to track the configuration and state changes in the machine learning plugin. This new version number is decoupled from the product version and will increment independently.

Request

edit

POST _ml/anomaly_detectors/<job_id>/model_snapshots/<snapshot_id>/_upgrade

Prerequisites

edit
  • Requires the manage_ml cluster privilege. This privilege is included in the machine_learning_admin built-in role.
  • The upgraded snapshot must have a version matching the previous major version.
  • The upgraded snapshot must NOT be the current anomaly detection job snapshot.

Description

edit

Over time, older snapshot formats are deprecated and removed. Anomaly detection jobs support only snapshots that are from the current or previous major version.

This API provides a means to upgrade a snapshot to the current major version. This aids in preparing the cluster for an upgrade to the next major version.

Only one snapshot per anomaly detection job can be upgraded at a time and the upgraded snapshot cannot be the current snapshot of the anomaly detection job.

Path parameters

edit
<job_id>
(Required, string) Identifier for the anomaly detection job.
<snapshot_id>
(Required, string) Identifier for the model snapshot.

Query parameters

edit
timeout
(Optional, time) Controls the time to wait for the request to complete. The default value is 30 minutes.
wait_for_completion
(Optional, boolean) When true, the API won’t respond until the upgrade is complete. Otherwise, it responds as soon as the upgrade task is assigned to a node. Default is false.

Response body

edit
node
(string) The ID of the assigned node for the upgrade task if it is still running.
completed
(boolean) When true, this means the task is complete. When false, it is still running.

Examples

edit
resp = client.ml.upgrade_job_snapshot(
    job_id="low_request_rate",
    snapshot_id="1828371",
    timeout="45m",
    wait_for_completion=True,
)
print(resp)
const response = await client.ml.upgradeJobSnapshot({
  job_id: "low_request_rate",
  snapshot_id: 1828371,
  timeout: "45m",
  wait_for_completion: "true",
});
console.log(response);
POST _ml/anomaly_detectors/low_request_rate/model_snapshots/1828371/_upgrade?timeout=45m&wait_for_completion=true

When the snapshot upgrade starts, you receive the following results:

{
  "completed" : false,
  "node" : "node-1"
}