123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- [[java-rest-high-x-pack-ml-put-job]]
- === Put Job API
- The Put Job API can be used to create a new {ml} job
- in the cluster. The API accepts a `PutJobRequest` object
- as a request and returns a `PutJobResponse`.
- [[java-rest-high-x-pack-ml-put-job-request]]
- ==== Put Job Request
- A `PutJobRequest` requires the following argument:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-request]
- --------------------------------------------------
- <1> The configuration of the {ml} job to create as a `Job`
- [[java-rest-high-x-pack-ml-put-job-config]]
- ==== Job Configuration
- The `Job` object contains all the details about the {ml} job
- configuration.
- A `Job` requires the following arguments:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-config]
- --------------------------------------------------
- <1> The job ID
- <2> An analysis configuration
- <3> A data description
- <4> Optionally, a human-readable description
- [[java-rest-high-x-pack-ml-put-job-analysis-config]]
- ==== Analysis Configuration
- The analysis configuration of the {ml} job is defined in the `AnalysisConfig`.
- `AnalysisConfig` reflects all the configuration
- settings that can be defined using the REST API.
- Using the REST API, we could define this analysis configuration:
- [source,js]
- --------------------------------------------------
- "analysis_config" : {
- "bucket_span" : "10m",
- "detectors" : [
- {
- "detector_description" : "Sum of total",
- "function" : "sum",
- "field_name" : "total"
- }
- ]
- }
- --------------------------------------------------
- // NOTCONSOLE
- Using the `AnalysisConfig` object and the high level REST client, the list
- of detectors must be built first.
- An example of building a `Detector` instance is as follows:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-detector]
- --------------------------------------------------
- <1> The function to use
- <2> The field to apply the function to
- <3> Optionally, a human-readable description
- Then the same configuration would be:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-analysis-config]
- --------------------------------------------------
- <1> Create a list of detectors
- <2> Pass the list of detectors to the analysis config builder constructor
- <3> The bucket span
- [[java-rest-high-x-pack-ml-put-job-data-description]]
- ==== Data Description
- After defining the analysis config, the next thing to define is the
- data description, using a `DataDescription` instance. `DataDescription`
- reflects all the configuration settings that can be defined using the
- REST API.
- Using the REST API, we could define this metrics configuration:
- [source,js]
- --------------------------------------------------
- "data_description" : {
- "time_field" : "timestamp"
- }
- --------------------------------------------------
- // NOTCONSOLE
- Using the `DataDescription` object and the high level REST client, the same
- configuration would be:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-data-description]
- --------------------------------------------------
- <1> The time field
- [[java-rest-high-x-pack-ml-put-job-execution]]
- ==== Execution
- The Put Job API can be executed through a `MachineLearningClient`
- instance. Such an instance can be retrieved from a `RestHighLevelClient`
- using the `machineLearning()` method:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-execute]
- --------------------------------------------------
- [[java-rest-high-x-pack-ml-put-job-response]]
- ==== Response
- The returned `PutJobResponse` returns the full representation of
- the new {ml} job if it has been successfully created. This will
- contain the creation time and other fields initialized using
- default values:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-response]
- --------------------------------------------------
- <1> The creation time is a field that was not passed in the `Job` object in the request
- [[java-rest-high-x-pack-ml-put-job-async]]
- ==== Asynchronous Execution
- This request can be executed asynchronously:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-execute-async]
- --------------------------------------------------
- <1> The `PutMlJobRequest` to execute and the `ActionListener` to use when
- the execution completes
- The asynchronous method does not block and returns immediately. Once it is
- completed the `ActionListener` is called back using the `onResponse` method
- if the execution successfully completed or using the `onFailure` method if
- it failed.
- A typical listener for `PutJobResponse` looks like:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/MlClientDocumentationIT.java[x-pack-ml-put-job-execute-listener]
- --------------------------------------------------
- <1> Called when the execution is successfully completed. The response is
- provided as an argument
- <2> Called in case of failure. The raised exception is provided as an argument
|