| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | [role="xpack"][testenv="platinum"][[ml-get-snapshot]]= Get model snapshots API++++<titleabbrev>Get model snapshots</titleabbrev>++++Retrieves information about model snapshots.[[ml-get-snapshot-request]]== {api-request-title}`GET _ml/anomaly_detectors/<job_id>/model_snapshots` +`GET _ml/anomaly_detectors/<job_id>/model_snapshots/<snapshot_id>`[[ml-get-snapshot-prereqs]]== {api-prereq-title}Requires the `monitor_ml` cluster privilege. This privilege is included in the `machine_learning_user` built-in role.[[ml-get-snapshot-path-parms]]== {api-path-parms-title}`<job_id>`::(Required, string)include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=job-id-anomaly-detection]`<snapshot_id>`::(Optional, string)include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=snapshot-id]+--You can multiple snapshots for a single job in a single API requestby using a comma-separated list of `<snapshot_id>` or a wildcard expression.You can get all snapshots for all calendars by using `_all`,by specifying `*` as the `<snapshot_id>`, or by omitting the `<snapshot_id>`.--[[ml-get-snapshot-request-body]]== {api-request-body-title}`desc`::  (Optional, Boolean) If true, the results are sorted in descending order.   Defaults to `false`.`end`::  (Optional, date) Returns snapshots with timestamps earlier than this time.  Defaults to unset, which means results are not limited to specific timestamps.`from`::  (Optional, integer) Skips the specified number of snapshots. Defaults to `0`.`size`::  (Optional, integer) Specifies the maximum number of snapshots to obtain.  Defaults to `100`.`sort`::  (Optional, string) Specifies the sort field for the requested snapshots. By  default, the snapshots are sorted by their timestamp.`start`::  (Optional, string) Returns snapshots with timestamps after this time. Defaults  to unset, which means results are not limited to specific timestamps.[role="child_attributes"][[ml-get-snapshot-results]]== {api-response-body-title}The API returns an array of model snapshot objects, which have the followingproperties:`description`::(string) An optional description of the job.`job_id`::(string) A numerical character string that uniquely identifies the job that  the snapshot was created for.`latest_record_time_stamp`::(date) The timestamp of the latest processed record.`latest_result_time_stamp`::(date) The timestamp of the latest bucket result.`min_version`::(string) The minimum version required to be able to restore the model snapshot.//Begin model_size_stats`model_size_stats`::(object) Summary information describing the model.+.Properties of `model_size_stats`[%collapsible%open]====`bucket_allocation_failures_count`:::(long) The number of buckets for which entities were not processed due to memorylimit constraints.`categorized_doc_count`:::(long) The number of documents that have had a field categorized.`categorization_status`:::(string) The status of categorization for this job.Contains one of the following values.+--* `ok`: Categorization is performing acceptably well (or not beingused at all).* `warn`: Categorization is detecting a distribution of categoriesthat suggests the input data is inappropriate for categorization.Problems could be that there is only one category, more than 90% ofcategories are rare, the number of categories is greater than 50% ofthe number of categorized documents, there are no frequentlymatched categories, or more than 50% of categories are dead.--`dead_category_count`:::(long) The number of categories created by categorization that willnever be assigned again because another category's definitionmakes it a superset of the dead category.  (Dead categories are aside effect of the way categorization has no prior training.)`failed_category_count`:::(long)include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=failed-category-count]`frequent_category_count`:::(long) The number of categories that match more than 1% of categorizeddocuments.`job_id`:::(string)include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=job-id-anomaly-detection]`log_time`:::(date) The timestamp that the `model_size_stats` were recorded, according toserver-time.`memory_status`:::(string) The status of the memory in relation to its `model_memory_limit`.Contains one of the following values.+--* `hard_limit`: The internal models require more space that the configuredmemory limit. Some incoming data could not be processed.* `ok`: The internal models stayed below the configured value.* `soft_limit`: The internal models require more than 60% of the configuredmemory limit and more aggressive pruning will be performed in order to try toreclaim space.--`model_bytes`:::(long) An approximation of the memory resources required for this analysis.`model_bytes_exceeded`:::(long) The number of bytes over the high limit for memory usage at the last allocation failure.`model_bytes_memory_limit`:::(long) The upper limit for memory usage, checked on increasing values.`rare_category_count`:::(long) The number of categories that match just one categorized document.`result_type`:::(string) Internal. This value is always `model_size_stats`.`timestamp`:::(date) The timestamp that the `model_size_stats` were recorded, according to thebucket timestamp of the data.`total_by_field_count`:::(long) The number of _by_ field values analyzed. Note that these are countedseparately for each detector and partition.`total_category_count`:::(long) The number of categories created by categorization.`total_over_field_count`:::(long) The number of _over_ field values analyzed. Note that these are countedseparately for each detector and partition.`total_partition_field_count`:::(long) The number of _partition_ field values analyzed.====//End model_size_stats`retain`::(Boolean)include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=retain]`snapshot_id`::(string) A numerical character string that uniquely identifies the modelsnapshot. For example: "1491852978".`snapshot_doc_count`::(long) For internal use only.`timestamp`::(date) The creation timestamp for the snapshot.[[ml-get-snapshot-example]]== {api-examples-title}[source,console]--------------------------------------------------GET _ml/anomaly_detectors/high_sum_total_sales/model_snapshots{  "start": "1575402236000"}--------------------------------------------------// TEST[skip:Kibana sample data]In this example, the API provides a single result:[source,js]----{  "count" : 1,  "model_snapshots" : [    {      "job_id" : "high_sum_total_sales",      "min_version" : "6.4.0",      "timestamp" : 1575402237000,      "description" : "State persisted due to job close at 2019-12-03T19:43:57+0000",      "snapshot_id" : "1575402237",      "snapshot_doc_count" : 1,      "model_size_stats" : {        "job_id" : "high_sum_total_sales",        "result_type" : "model_size_stats",        "model_bytes" : 1638816,        "model_bytes_exceeded" : 0,        "model_bytes_memory_limit" : 10485760,        "total_by_field_count" : 3,        "total_over_field_count" : 3320,        "total_partition_field_count" : 2,        "bucket_allocation_failures_count" : 0,        "memory_status" : "ok",        "categorized_doc_count" : 0,        "total_category_count" : 0,        "frequent_category_count" : 0,        "rare_category_count" : 0,        "dead_category_count" : 0,        "categorization_status" : "ok",        "log_time" : 1575402237000,        "timestamp" : 1576965600000      },      "latest_record_time_stamp" : 1576971072000,      "latest_result_time_stamp" : 1576965600000,      "retain" : false    }  ]}----
 |