put-job.asciidoc 11 KB

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