put-job.asciidoc 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  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. //Begin data_description
  197. [[put-datadescription]]`data_description`::
  198. (Required, object)
  199. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=data-description]
  200. //End data_description
  201. `daily_model_snapshot_retention_after_days`::
  202. (Optional, long)
  203. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=daily-model-snapshot-retention-after-days]
  204. `description`::
  205. (Optional, string) A description of the job.
  206. `groups`::
  207. (Optional, array of strings)
  208. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=groups]
  209. //Begin model_plot_config
  210. `model_plot_config`::
  211. (Optional, object)
  212. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config]
  213. +
  214. .Properties of `model_plot_config`
  215. [%collapsible%open]
  216. ====
  217. `annotations_enabled`:::
  218. (Boolean)
  219. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config-annotations-enabled]
  220. `enabled`:::
  221. (Boolean)
  222. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config-enabled]
  223. `terms`:::
  224. experimental[] (string)
  225. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-plot-config-terms]
  226. ====
  227. //End model_plot_config
  228. `model_snapshot_retention_days`::
  229. (Optional, long)
  230. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-snapshot-retention-days]
  231. `renormalization_window_days`::
  232. (Optional, long)
  233. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=renormalization-window-days]
  234. `results_index_name`::
  235. (Optional, string)
  236. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=results-index-name]
  237. `results_retention_days`::
  238. (Optional, long)
  239. include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=results-retention-days]
  240. [[ml-put-job-example]]
  241. == {api-examples-title}
  242. [source,console]
  243. --------------------------------------------------
  244. PUT _ml/anomaly_detectors/total-requests
  245. {
  246. "description" : "Total sum of requests",
  247. "analysis_config" : {
  248. "bucket_span":"10m",
  249. "detectors": [
  250. {
  251. "detector_description": "Sum of total",
  252. "function": "sum",
  253. "field_name": "total"
  254. }
  255. ]
  256. },
  257. "data_description" : {
  258. "time_field":"timestamp",
  259. "time_format": "epoch_ms"
  260. }
  261. }
  262. --------------------------------------------------
  263. When the job is created, you receive the following results:
  264. [source,console-result]
  265. ----
  266. {
  267. "job_id" : "total-requests",
  268. "job_type" : "anomaly_detector",
  269. "job_version" : "8.0.0",
  270. "description" : "Total sum of requests",
  271. "create_time" : 1562352500629,
  272. "analysis_config" : {
  273. "bucket_span" : "10m",
  274. "detectors" : [
  275. {
  276. "detector_description" : "Sum of total",
  277. "function" : "sum",
  278. "field_name" : "total",
  279. "detector_index" : 0
  280. }
  281. ],
  282. "influencers" : [ ]
  283. },
  284. "analysis_limits" : {
  285. "model_memory_limit" : "1024mb",
  286. "categorization_examples_limit" : 4
  287. },
  288. "data_description" : {
  289. "time_field" : "timestamp",
  290. "time_format" : "epoch_ms"
  291. },
  292. "model_snapshot_retention_days" : 10,
  293. "daily_model_snapshot_retention_after_days" : 1,
  294. "results_index_name" : "shared",
  295. "allow_lazy_open" : false
  296. }
  297. ----
  298. // TESTRESPONSE[s/"job_version" : "8.0.0"/"job_version" : $body.job_version/]
  299. // TESTRESPONSE[s/1562352500629/$body.$_path/]