123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- [[java-rest-high-x-pack-rollup-put-job]]
- === Put Rollup Job API
- The Put Rollup Job API can be used to create a new Rollup job
- in the cluster. The API accepts a `PutRollupJobRequest` object
- as a request and returns a `PutRollupJobResponse`.
- [[java-rest-high-x-pack-rollup-put-rollup-job-request]]
- ==== Put Rollup Job Request
- A `PutRollupJobRequest` requires the following argument:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-request]
- --------------------------------------------------
- <1> The configuration of the Rollup job to create as a `RollupJobConfig`
- [[java-rest-high-x-pack-rollup-put-rollup-job-config]]
- ==== Rollup Job Configuration
- The `RollupJobConfig` object contains all the details about the rollup job
- configuration. See {ref}/rollup-job-config.html[Rollup configuration] to learn more
- about the various configuration settings.
- A `RollupJobConfig` requires the following arguments:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-config]
- --------------------------------------------------
- <1> The name of the Rollup job
- <2> The index (or index pattern) to rollup
- <3> The index to store rollup results into
- <4> A cron expression which defines when the Rollup job should be executed
- <5> The page size to use for the Rollup job
- <6> The grouping configuration of the Rollup job as a `GroupConfig`
- <7> The metrics configuration of the Rollup job as a list of `MetricConfig`
- <8> The timeout value to use for the Rollup job as a `TimeValue`
- [[java-rest-high-x-pack-rollup-put-rollup-job-group-config]]
- ==== Grouping Configuration
- The grouping configuration of the Rollup job is defined in the `RollupJobConfig`
- using a `GroupConfig` instance. `GroupConfig` reflects all the configuration
- settings that can be defined using the REST API. See {ref}/rollup-job-config.html#rollup-groups-config[Grouping Config]
- to learn more about these settings.
- Using the REST API, we could define this grouping configuration:
- [source,js]
- --------------------------------------------------
- "groups" : {
- "date_histogram": {
- "field": "timestamp",
- "calendar_interval": "1h",
- "delay": "7d",
- "time_zone": "UTC"
- },
- "terms": {
- "fields": ["hostname", "datacenter"]
- },
- "histogram": {
- "fields": ["load", "net_in", "net_out"],
- "interval": 5
- }
- }
- --------------------------------------------------
- // NOTCONSOLE
- Using the `GroupConfig` object and the high level REST client, the same
- configuration would be:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-group-config]
- --------------------------------------------------
- <1> The date histogram aggregation to use to rollup up documents, as a `DateHistogramGroupConfig`
- <2> The terms aggregation to use to rollup up documents, as a `TermsGroupConfig`
- <3> The histogram aggregation to use to rollup up documents, as a `HistogramGroupConfig`
- <4> The grouping configuration as a `GroupConfig`
- [[java-rest-high-x-pack-rollup-put-rollup-job-metrics-config]]
- ==== Metrics Configuration
- After defining which groups should be generated for the data, you next configure
- which metrics should be collected. The list of metrics is defined in the `RollupJobConfig`
- using a `List<MetricConfig>` instance. `MetricConfig` reflects all the configuration
- settings that can be defined using the REST API. See {ref}/rollup-job-config.html#rollup-metrics-config[Metrics Config]
- to learn more about these settings.
- Using the REST API, we could define this metrics configuration:
- [source,js]
- --------------------------------------------------
- "metrics": [
- {
- "field": "temperature",
- "metrics": ["min", "max", "sum"]
- },
- {
- "field": "voltage",
- "metrics": ["avg", "value_count"]
- }
- ]
- --------------------------------------------------
- // NOTCONSOLE
- Using the `MetricConfig` object and the high level REST client, the same
- configuration would be:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-metrics-config]
- --------------------------------------------------
- <1> The list of `MetricConfig` to configure in the `RollupJobConfig`
- <2> Adds the metrics to compute on the `temperature` field
- <3> Adds the metrics to compute on the `voltage` field
- [[java-rest-high-x-pack-rollup-put-rollup-job-execution]]
- ==== Execution
- The Put Rollup Job API can be executed through a `RollupClient`
- instance. Such instance can be retrieved from a `RestHighLevelClient`
- using the `rollup()` method:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-execute]
- --------------------------------------------------
- [[java-rest-high-x-pack-rollup-put-rollup-job-response]]
- ==== Response
- The returned `PutRollupJobResponse` indicates if the new Rollup job
- has been successfully created:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-response]
- --------------------------------------------------
- <1> `acknowledged` is a boolean indicating whether the job was successfully created
- [[java-rest-high-x-pack-rollup-put-rollup-job-async]]
- ==== Asynchronous Execution
- This request can be executed asynchronously:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-job-execute-async]
- --------------------------------------------------
- <1> The `PutRollupJobRequest` 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 `PutRollupJobResponse` looks like:
- ["source","java",subs="attributes,callouts,macros"]
- --------------------------------------------------
- include-tagged::{doc-tests}/RollupDocumentationIT.java[x-pack-rollup-put-rollup-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
|