put-job.asciidoc 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. [role="xpack"]
  2. [[ml-put-job]]
  3. = Create {anomaly-jobs} API
  4. ++++
  5. <titleabbrev>Create jobs</titleabbrev>
  6. ++++
  7. Instantiates an {anomaly-job}.
  8. [[ml-put-job-request]]
  9. == {api-request-title}
  10. `PUT _ml/anomaly_detectors/<job_id>`
  11. [[ml-put-job-prereqs]]
  12. == {api-prereq-title}
  13. Requires the `manage_ml` cluster privilege. This privilege is included in the
  14. `machine_learning_admin` built-in role.
  15. If you include a `datafeed_config`, you must also have `read` index privileges
  16. on the source index.
  17. [[ml-put-job-desc]]
  18. == {api-description-title}
  19. [IMPORTANT]
  20. ====
  21. * You must use {kib} or this API to create an {anomaly-job}. Do not put
  22. a job directly to the `.ml-config` index using the {es} index API. If {es}
  23. {security-features} are enabled, do not give users `write` privileges on the
  24. `.ml-config` index.
  25. * If you include a `datafeed_config` and {es} {security-features} are enabled,
  26. your {dfeed} remembers which roles the user who created it had at the time of
  27. creation and runs the query using those same roles. If you provide
  28. <<http-clients-secondary-authorization,secondary authorization headers>>, those
  29. credentials are used instead.
  30. ====
  31. [[ml-put-job-path-parms]]
  32. == {api-path-parms-title}
  33. `<job_id>`::
  34. (Required, string)
  35. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=job-id-anomaly-detection-define]
  36. [role="child_attributes"]
  37. [[ml-put-job-request-body]]
  38. == {api-request-body-title}
  39. `allow_lazy_open`::
  40. (Optional, Boolean)
  41. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=allow-lazy-open]
  42. //Begin analysis_config
  43. [[put-analysisconfig]]`analysis_config`::
  44. (Required, object)
  45. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=analysis-config]
  46. +
  47. .Properties of `analysis_config`
  48. [%collapsible%open]
  49. ====
  50. `bucket_span`:::
  51. (<<time-units,time units>>)
  52. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=bucket-span]
  53. `categorization_analyzer`:::
  54. (object or string)
  55. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=categorization-analyzer]
  56. `categorization_field_name`:::
  57. (string)
  58. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=categorization-field-name]
  59. `categorization_filters`:::
  60. (array of strings)
  61. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=categorization-filters]
  62. //Begin analysis_config.detectors
  63. `detectors`:::
  64. (array) An array of detector configuration objects. Detector configuration
  65. objects specify which data fields a job analyzes. They also specify which
  66. analytical functions are used. You can specify multiple detectors for a job.
  67. +
  68. NOTE: If the `detectors` array does not contain at least one detector,
  69. no analysis can occur and an error is returned.
  70. +
  71. .Properties of `detectors`
  72. [%collapsible%open]
  73. =====
  74. `by_field_name`::::
  75. (string)
  76. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=by-field-name]
  77. //Begin analysis_config.detectors.custom_rules
  78. [[put-customrules]]`custom_rules`::::
  79. (array)
  80. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules]
  81. +
  82. .Properties of `custom_rules`
  83. [%collapsible%open]
  84. ======
  85. `actions`:::
  86. (array)
  87. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-actions]
  88. //Begin analysis_config.detectors.custom_rules.conditions
  89. `conditions`:::
  90. (array)
  91. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions]
  92. +
  93. .Properties of `conditions`
  94. [%collapsible%open]
  95. =======
  96. `applies_to`::::
  97. (string)
  98. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions-applies-to]
  99. `operator`::::
  100. (string)
  101. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions-operator]
  102. `value`::::
  103. (double)
  104. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-conditions-value]
  105. =======
  106. //End analysis_config.detectors.custom_rules.conditions
  107. //Begin analysis_config.detectors.custom_rules.scope
  108. `scope`:::
  109. (object)
  110. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-scope]
  111. +
  112. .Properties of `scope`
  113. [%collapsible%open]
  114. =======
  115. `filter_id`::::
  116. (string)
  117. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-scope-filter-id]
  118. `filter_type`::::
  119. (string)
  120. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-rules-scope-filter-type]
  121. =======
  122. //End analysis_config.detectors.custom_rules.scope
  123. ======
  124. //End analysis_config.detectors.custom_rules
  125. `detector_description`::::
  126. (string)
  127. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=detector-description]
  128. `detector_index`::::
  129. (integer)
  130. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=detector-index]
  131. +
  132. If you specify a value for this property, it is ignored.
  133. `exclude_frequent`::::
  134. (string)
  135. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=exclude-frequent]
  136. `field_name`::::
  137. (string)
  138. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=detector-field-name]
  139. `function`::::
  140. (string)
  141. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=function]
  142. `over_field_name`::::
  143. (string)
  144. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=over-field-name]
  145. `partition_field_name`::::
  146. (string)
  147. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=partition-field-name]
  148. `use_null`::::
  149. (Boolean)
  150. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=use-null]
  151. =====
  152. //End analysis_config.detectors
  153. `influencers`:::
  154. (array of strings)
  155. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=influencers]
  156. `latency`:::
  157. (time units)
  158. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=latency]
  159. `model_prune_window`:::
  160. (Optional, <<time-units,time units>>)
  161. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-prune-window]
  162. `multivariate_by_fields`:::
  163. (Boolean)
  164. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=multivariate-by-fields]
  165. //Begin analysis_config.per_partition_categorization
  166. `per_partition_categorization`:::
  167. (Optional, object)
  168. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=per-partition-categorization]
  169. +
  170. .Properties of `per_partition_categorization`
  171. [%collapsible%open]
  172. =====
  173. `enabled`::::
  174. (Boolean)
  175. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=per-partition-categorization-enabled]
  176. `stop_on_warn`::::
  177. (Boolean)
  178. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=per-partition-categorization-stop-on-warn]
  179. =====
  180. //End analysis_config.per_partition_categorization
  181. `summary_count_field_name`:::
  182. (string)
  183. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=summary-count-field-name]
  184. ====
  185. //End analysis_config
  186. //Begin analysis_limits
  187. [[put-analysislimits]]`analysis_limits`::
  188. (Optional, object)
  189. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=analysis-limits]
  190. +
  191. .Properties of `analysis_limits`
  192. [%collapsible%open]
  193. ====
  194. `categorization_examples_limit`:::
  195. (long)
  196. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=categorization-examples-limit]
  197. `model_memory_limit`:::
  198. (long or string)
  199. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-memory-limit-ad]
  200. ====
  201. //End analysis_limits
  202. `background_persist_interval`::
  203. (Optional, <<time-units, time units>>)
  204. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=background-persist-interval]
  205. [[put-customsettings]]`custom_settings`::
  206. (Optional, object)
  207. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=custom-settings]
  208. [[put-dailymodelsnapshotretentionafterdays]]`daily_model_snapshot_retention_after_days`::
  209. (Optional, long)
  210. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=daily-model-snapshot-retention-after-days]
  211. //Begin data_description
  212. [[put-datadescription]]`data_description`::
  213. (Required, object)
  214. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=data-description]
  215. //End data_description
  216. [[put-datafeedconfig]]`datafeed_config`::
  217. (Optional, object) The {ml-docs}/ml-dfeeds.html[{dfeed}], which retrieves data
  218. from {es} for analysis by the job. You can associate only one {dfeed} with each
  219. {anomaly-job}.
  220. +
  221. .Properties of `datafeed`
  222. [%collapsible%open]
  223. ====
  224. `aggregations`:::
  225. (Optional, object)
  226. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=aggregations]
  227. `chunking_config`:::
  228. (Optional, object)
  229. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=chunking-config]
  230. +
  231. .Properties of `chunking_config`
  232. [%collapsible%open]
  233. =====
  234. `mode`:::
  235. (string)
  236. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=mode]
  237. `time_span`:::
  238. (<<time-units,time units>>)
  239. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=time-span]
  240. =====
  241. `datafeed_id`:::
  242. (Optional, string)
  243. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=datafeed-id]
  244. +
  245. Defaults to the same ID as the {anomaly-job}.
  246. `delayed_data_check_config`:::
  247. (Optional, object)
  248. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=delayed-data-check-config]
  249. +
  250. .Properties of `delayed_data_check_config`
  251. [%collapsible%open]
  252. =====
  253. `check_window`::
  254. (<<time-units,time units>>)
  255. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=delayed-data-check-config-check-window]
  256. `enabled`::
  257. (Boolean)
  258. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=delayed-data-check-config-enabled]
  259. =====
  260. `frequency`:::
  261. (Optional, <<time-units, time units>>)
  262. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=frequency]
  263. `indices`:::
  264. (Required, array)
  265. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=indices]
  266. `indices_options`:::
  267. (Optional, object)
  268. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=indices-options]
  269. `max_empty_searches`:::
  270. (Optional,integer)
  271. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=max-empty-searches]
  272. `query`:::
  273. (Optional, object)
  274. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=query]
  275. `query_delay`:::
  276. (Optional, <<time-units, time units>>)
  277. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=query-delay]
  278. `runtime_mappings`:::
  279. (Optional, object)
  280. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=runtime-mappings]
  281. `script_fields`:::
  282. (Optional, object)
  283. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=script-fields]
  284. `scroll_size`:::
  285. (Optional, unsigned integer)
  286. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=scroll-size]
  287. ====
  288. `description`::
  289. (Optional, string) A description of the job.
  290. `groups`::
  291. (Optional, array of strings)
  292. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=groups]
  293. //Begin model_plot_config
  294. `model_plot_config`::
  295. (Optional, object)
  296. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config]
  297. +
  298. .Properties of `model_plot_config`
  299. [%collapsible%open]
  300. ====
  301. `annotations_enabled`:::
  302. (Boolean)
  303. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config-annotations-enabled]
  304. `enabled`:::
  305. (Boolean)
  306. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config-enabled]
  307. `terms`:::
  308. experimental[] (string)
  309. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config-terms]
  310. ====
  311. //End model_plot_config
  312. [[put-modelsnapshotretentiondays]]`model_snapshot_retention_days`::
  313. (Optional, long)
  314. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-snapshot-retention-days]
  315. [[put-renormalizationwindowdays]]`renormalization_window_days`::
  316. (Optional, long)
  317. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=renormalization-window-days]
  318. [[put-resultsindexname]]`results_index_name`::
  319. (Optional, string)
  320. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=results-index-name]
  321. [[put-resultsretentiondays]]`results_retention_days`::
  322. (Optional, long)
  323. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=results-retention-days]
  324. [[ml-put-job-example]]
  325. == {api-examples-title}
  326. [source,console]
  327. --------------------------------------------------
  328. PUT _ml/anomaly_detectors/total-requests
  329. {
  330. "description" : "Total sum of requests",
  331. "analysis_config" : {
  332. "bucket_span":"10m",
  333. "detectors": [
  334. {
  335. "detector_description": "Sum of total",
  336. "function": "sum",
  337. "field_name": "total"
  338. }
  339. ]
  340. },
  341. "data_description" : {
  342. "time_field":"timestamp",
  343. "time_format": "epoch_ms"
  344. }
  345. }
  346. --------------------------------------------------
  347. When the job is created, you receive the following results:
  348. [source,console-result]
  349. ----
  350. {
  351. "job_id" : "total-requests",
  352. "job_type" : "anomaly_detector",
  353. "job_version" : "8.0.0",
  354. "description" : "Total sum of requests",
  355. "create_time" : 1562352500629,
  356. "analysis_config" : {
  357. "bucket_span" : "10m",
  358. "detectors" : [
  359. {
  360. "detector_description" : "Sum of total",
  361. "function" : "sum",
  362. "field_name" : "total",
  363. "detector_index" : 0
  364. }
  365. ],
  366. "influencers" : [ ],
  367. "model_prune_window": "30d"
  368. },
  369. "analysis_limits" : {
  370. "model_memory_limit" : "1024mb",
  371. "categorization_examples_limit" : 4
  372. },
  373. "data_description" : {
  374. "time_field" : "timestamp",
  375. "time_format" : "epoch_ms"
  376. },
  377. "model_snapshot_retention_days" : 10,
  378. "daily_model_snapshot_retention_after_days" : 1,
  379. "results_index_name" : "shared",
  380. "allow_lazy_open" : false
  381. }
  382. ----
  383. // TESTRESPONSE[s/"job_version" : "8.0.0"/"job_version" : $body.job_version/]
  384. // TESTRESPONSE[s/1562352500629/$body.$_path/]