|
@@ -0,0 +1,161 @@
|
|
|
+[[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
|