[role="xpack"]
[testenv="basic"]
[[rollup-put-job]]
=== Create {rollup-jobs} API
[subs="attributes"]
++++
Create {rollup-jobs}
++++
Creates a {rollup-job}.
experimental[]
[[sample-api-request]]
==== {api-request-title}
`PUT _rollup/job/`
[[sample-api-prereqs]]
==== {api-prereq-title}
* If the {es} {security-features} are enabled, you must have `manage` or
`manage_rollup` cluster privileges to use this API. For more information, see
{stack-ov}/security-privileges.html[Security privileges].
[[sample-api-desc]]
==== {api-description-title}
Jobs are created in a `STOPPED` state. You can start them with the
<>.
[[sample-api-path-params]]
==== {api-path-parms-title}
`job_id`::
(Required, string) Identifier for the {rollup-job}.
[[sample-api-request-body]]
==== {api-request-body-title}
`cron`::
(Required, string) A cron string which defines when the {rollup-job} should be executed.
`groups`::
(Required, object) Defines the grouping fields that are defined for this
{rollup-job}. See <>.
`index_pattern`::
(Required, string) The index or index pattern to roll up. Supports
wildcard-style patterns (`logstash-*`).
`metrics`::
(Optional, object) Defines the metrics to collect for each grouping tuple. See
<>.
`page_size`::
(Required, integer) The number of bucket results that are processed on each
iteration of the rollup indexer. A larger value tends to execute faster, but
requires more memory during processing.
`rollup_index`::
(Required, string) The index that contains the rollup results. The index can
be shared with other {rollup-jobs}.
For more details about the job configuration, see <>.
[[sample-api-example]]
==== {api-example-title}
The following example creates a {rollup-job} named "sensor", targeting the
"sensor-*" index pattern:
[source,js]
--------------------------------------------------
PUT _rollup/job/sensor
{
"index_pattern": "sensor-*",
"rollup_index": "sensor_rollup",
"cron": "*/30 * * * * ?",
"page_size" :1000,
"groups" : {
"date_histogram": {
"field": "timestamp",
"fixed_interval": "1h",
"delay": "7d"
},
"terms": {
"fields": ["node"]
}
},
"metrics": [
{
"field": "temperature",
"metrics": ["min", "max", "sum"]
},
{
"field": "voltage",
"metrics": ["avg"]
}
]
}
--------------------------------------------------
// CONSOLE
// TEST[setup:sensor_index]
When the job is created, you receive the following results:
[source,js]
----
{
"acknowledged": true
}
----
// TESTRESPONSE