[role="xpack"] [testenv="platinum"] [[ml-update-job]] === Update {anomaly-jobs} API ++++ Update jobs ++++ Updates certain properties of an {anomaly-job}. [[ml-update-job-request]] ==== {api-request-title} `POST _ml/anomaly_detectors//_update` [[ml-update-job-prereqs]] ==== {api-prereq-title} * If the {es} {security-features} are enabled, you must have `manage_ml` or `manage` cluster privileges to use this API. See <>. [[ml-update-job-path-parms]] ==== {api-path-parms-title} ``:: (Required, string) include::{docdir}/ml/ml-shared.asciidoc[tag=job-id-anomaly-detection] [[ml-update-job-request-body]] ==== {api-request-body-title} The following properties can be updated after the job is created: `allow_lazy_open`:: (boolean) include::{docdir}/ml/ml-shared.asciidoc[tag=allow-lazy-open] + -- NOTE: If the job is open when you make the update, you must stop the {dfeed}, close the job, then reopen the job and restart the {dfeed} for the changes to take effect. -- [[update-analysislimits]]`analysis_limits`.`model_memory_limit`:: (long or string) include::{docdir}/ml/ml-shared.asciidoc[tag=model-memory-limit] + -- NOTE: You can update the `analysis_limits` only while the job is closed. The `model_memory_limit` property value cannot be decreased below the current usage. TIP: If the `memory_status` property in the <> has a value of `hard_limit`, this means that it was unable to process some data. You might want to re-run the job with an increased `model_memory_limit`. -- `background_persist_interval`:: (<>) include::{docdir}/ml/ml-shared.asciidoc[tag=background-persist-interval] + -- NOTE: If the job is open when you make the update, you must stop the {dfeed}, close the job, then reopen the job and restart the {dfeed} for the changes to take effect. -- [[update-customsettings]]`custom_settings`:: (object) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-settings] `description`:: (string) A description of the job. `detectors`:: (array) An array of detector update objects. `detectors`.`custom_rules`::: + -- (array) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules] `detectors`.`custom_rules`.`actions`::: (array) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-actions] `detectors`.`custom_rules`.`scope`::: (object) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-scope] `detectors`.`custom_rules`.`scope`.`filter_id`:::: (string) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-scope-filter-id] `detectors`.`custom_rules`.`scope`.`filter_type`:::: (string) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-scope-filter-type] `detectors`.`custom_rules`.`conditions`::: (array) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions] `detectors`.`custom_rules`.`conditions`.`applies_to`:::: (string) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions-applies-to] `detectors`.`custom_rules`.`conditions`.`operator`:::: (string) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions-operator] `detectors`.`custom_rules`.`conditions`.`value`:::: (double) include::{docdir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions-value] -- `detectors`.`description`::: (string) include::{docdir}/ml/ml-shared.asciidoc[tag=detector-description] `detectors`.`detector_index`::: (integer) include::{docdir}/ml/ml-shared.asciidoc[tag=detector-index] `groups`:: (array of strings) include::{docdir}/ml/ml-shared.asciidoc[tag=groups] `model_plot_config`:: (object) include::{docdir}/ml/ml-shared.asciidoc[tag=model-plot-config] `model_plot_config`.`enabled`::: (boolean) include::{docdir}/ml/ml-shared.asciidoc[tag=model-plot-config-enabled] `model_snapshot_retention_days`:: (long) include::{docdir}/ml/ml-shared.asciidoc[tag=model-snapshot-retention-days] `renormalization_window_days`:: (long) include::{docdir}/ml/ml-shared.asciidoc[tag=renormalization-window-days] + -- NOTE: If the job is open when you make the update, you must stop the {dfeed}, close the job, then reopen the job and restart the {dfeed} for the changes to take effect. -- `results_retention_days`:: (long) include::{docdir}/ml/ml-shared.asciidoc[tag=results-retention-days] [[ml-update-job-example]] ==== {api-examples-title} [source,console] -------------------------------------------------- POST _ml/anomaly_detectors/total-requests/_update { "description":"An updated job", "groups": ["group1","group2"], "model_plot_config": { "enabled": true }, "analysis_limits": { "model_memory_limit": "1024mb" }, "renormalization_window_days": 30, "background_persist_interval": "2h", "model_snapshot_retention_days": 7, "results_retention_days": 60, "custom_settings": { "custom_urls" : [{ "url_name" : "Lookup IP", "url_value" : "http://geoiplookup.net/ip/$clientip$" }] } } -------------------------------------------------- // TEST[skip:setup:server_metrics_job] When the {anomaly-job} is updated, you receive a summary of the job configuration information, including the updated property values. For example: [source,console-result] ---- { "job_id": "total-requests", "job_type": "anomaly_detector", "job_version": "7.0.0-alpha1", "groups": [ "group1", "group2" ], "description": "An updated job", "create_time": 1518808660505, "analysis_config": { "bucket_span": "10m", "detectors": [ { "detector_description": "Sum of total", "function": "sum", "field_name": "total", "detector_index": 0 } ], "influencers": [] }, "analysis_limits": { "model_memory_limit": "1024mb", "categorization_examples_limit": 4 }, "data_description": { "time_field": "timestamp", "time_format": "epoch_ms" }, "model_plot_config": { "enabled": true }, "renormalization_window_days": 30, "background_persist_interval": "2h", "model_snapshot_retention_days": 7, "results_retention_days": 60, "custom_settings": { "custom_urls": [ { "url_name": "Lookup IP", "url_value": "http://geoiplookup.net/ip/$clientip$" } ] }, "results_index_name": "shared", "allow_lazy_open": false } ---- // TESTRESPONSE[s/"job_version": "7.0.0-alpha1"/"job_version": $body.job_version/] // TESTRESPONSE[s/"create_time": 1518808660505/"create_time": $body.create_time/]