[role="xpack"]
[[ml-flush-job]]
=== Flush Jobs API
++++
<titleabbrev>Flush Jobs</titleabbrev>
++++

This API forces any buffered data to be processed by the job.


==== Request

`POST _xpack/ml/anomaly_detectors/<job_id>/_flush`


==== Description

The flush jobs API is only applicable when sending data for analysis using the
<<ml-post-data,post data API>>. Depending on the content of the buffer, then it
might additionally calculate new results.

Both flush and close operations are similar, however the flush is more efficient
if you are expecting to send more data for analysis. When flushing, the job
remains open and is available to continue analyzing data. A close operation
additionally prunes and persists the model state to disk and the job must be
opened again before analyzing further data.


==== Path Parameters

`job_id` (required)::
(string) Identifier for the job


==== Query Parameters

`advance_time`::
  (string) Specifies to advance to a particular time value. Results are
  generated and the model is updated for data from the specified time interval.

`calc_interim`::
  (boolean) If true, calculates the interim results for the most recent bucket
  or all buckets within the latency period.

`end`::
  (string) When used in conjunction with `calc_interim`, specifies the range
  of buckets on which to calculate interim results.

`skip_time`::
  (string) Specifies to skip to a particular time value. Results are not
  generated and the model is not updated for data from the specified time
  interval.

`start`::
  (string) When used in conjunction with `calc_interim`, specifies the range of
  buckets on which to calculate interim results.


==== Authorization

You must have `manage_ml`, or `manage` cluster privileges to use this API.
For more information, see {xpack-ref}/security-privileges.html[Security Privileges].


==== Examples

The following example flushes the `total-requests` job:

[source,js]
--------------------------------------------------
POST _xpack/ml/anomaly_detectors/total-requests/_flush
{
  "calc_interim": true
}
--------------------------------------------------
// CONSOLE
// TEST[setup:server_metrics_openjob]

When the operation succeeds, you receive the following results:
[source,js]
----
{
  "flushed": true,
  "last_finalized_bucket_end": 1455234900000
}
----
// TESTRESPONSE[s/"last_finalized_bucket_end": 1455234900000/"last_finalized_bucket_end": $body.last_finalized_bucket_end/]

The `last_finalized_bucket_end` provides the timestamp (in
milliseconds-since-the-epoch) of the end of the last bucket that was processed.

If you want to flush the job to a specific timestamp, you can use the
`advance_time` or `skip_time` parameters.  For example, to advance to 11 AM GMT
on January 1, 2018:

[source,js]
--------------------------------------------------
POST _xpack/ml/anomaly_detectors/total-requests/_flush
{
  "advance_time": "1514804400"
}
--------------------------------------------------
// CONSOLE
// TEST[setup:server_metrics_openjob]

When the operation succeeds, you receive the following results:
[source,js]
----
{
  "flushed": true,
  "last_finalized_bucket_end": 1514804400000
}
----
// TESTRESPONSE
