2019-09-11 14:48:32 -04:00
|
|
|
[role="xpack"]
|
2018-09-17 03:10:23 -04:00
|
|
|
[[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
|
2018-09-17 07:37:39 -04:00
|
|
|
configuration. See {ref}/rollup-job-config.html[Rollup configuration] to learn more
|
2018-09-17 03:10:23 -04:00
|
|
|
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
|
2018-09-17 07:37:39 -04:00
|
|
|
settings that can be defined using the REST API. See {ref}/rollup-job-config.html#rollup-groups-config[Grouping Config]
|
2018-09-17 03:10:23 -04:00
|
|
|
to learn more about these settings.
|
|
|
|
|
|
|
|
Using the REST API, we could define this grouping configuration:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
"groups" : {
|
|
|
|
"date_histogram": {
|
|
|
|
"field": "timestamp",
|
[7.x Backport] Force selection of calendar or fixed intervals (#41906)
The date_histogram accepts an interval which can be either a calendar
interval (DST-aware, leap seconds, arbitrary length of months, etc) or
fixed interval (strict multiples of SI units). Unfortunately this is inferred
by first trying to parse as a calendar interval, then falling back to fixed
if that fails.
This leads to confusing arrangement where `1d` == calendar, but
`2d` == fixed. And if you want a day of fixed time, you have to
specify `24h` (e.g. the next smallest unit). This arrangement is very
error-prone for users.
This PR adds `calendar_interval` and `fixed_interval` parameters to any
code that uses intervals (date_histogram, rollup, composite, datafeed, etc).
Calendar only accepts calendar intervals, fixed accepts any combination of
units (meaning `1d` can be used to specify `24h` in fixed time), and both
are mutually exclusive.
The old interval behavior is deprecated and will throw a deprecation warning.
It is also mutually exclusive with the two new parameters. In the future the
old dual-purpose interval will be removed.
The change applies to both REST and java clients.
2019-05-20 12:07:29 -04:00
|
|
|
"calendar_interval": "1h",
|
2018-09-17 03:10:23 -04:00
|
|
|
"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
|
2018-09-17 07:37:39 -04:00
|
|
|
settings that can be defined using the REST API. See {ref}/rollup-job-config.html#rollup-metrics-config[Metrics Config]
|
2018-09-17 03:10:23 -04:00
|
|
|
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
|