Get transform statistics APIedit

Retrieves usage information for transforms.

This functionality is in beta and is subject to change. The design and code is less mature than official GA features and is being provided as-is with no warranties. Beta features are not subject to the support SLA of official GA features.


GET _transform/<transform_id>/_stats

GET _transform/<transform_id>,<transform_id>/_stats

GET _transform/_stats

GET _transform/_all/_stats

GET _transform/*/_stats


  • If the Elasticsearch security features are enabled, you must have monitor_transform cluster privileges to use this API. The built-in transform_user role has these privileges. For more information, see Security privileges and Built-in roles.


You can get statistics for multiple transforms in a single API request by using a comma-separated list of identifiers or a wildcard expression. You can get statistics for all transforms by using _all, by specifying * as the <transform_id>, or by omitting the <transform_id>.

Path parametersedit

(Optional, string) Identifier for the transform. It can be a transform identifier or a wildcard expression. If you do not specify one of these options, the API returns information for all transforms.

Query parametersedit


(Optional, boolean) Specifies what to do when the request:

  • Contains wildcard expressions and there are no transforms that match.
  • Contains the _all string or no identifiers and there are no matches.
  • Contains wildcard expressions and there are only partial matches.

The default value is true, which returns an empty transforms array when there are no matches and the subset of results when there are partial matches.

If this parameter is false, the request returns a 404 status code when there are no matches or only partial matches.

(Optional, integer) Skips the specified number of transforms. The default value is 0.
(Optional, integer) Specifies the maximum number of transforms to obtain. The default value is 100.

Response bodyedit

The API returns an array of statistics objects for transforms, which are sorted by the id value in ascending order. All of these properties are informational; you cannot update their values.


(object) Contains statistics about checkpoints.

(date) The timestamp when changes were last detected in the source indices.

(object) Contains statistics about the last completed checkpoint.

(integer) The sequence number for the checkpoint.
(date) When using time-based synchronization, this timestamp indicates the upper bound of data that is included in the checkpoint.
(date) The timestamp of the checkpoint, which indicates when the checkpoint was created.

(object) Contains statistics about the next checkpoint that is currently in progress. This object appears only when the transform state is indexing.
(integer) The sequence number for the checkpoint.
(object) Contains statistics about the progress of the checkpoint. For example, it lists the total_docs, docs_remaining, percent_complete, docs_processed, and docs_indexed. This information is available only for batch transforms and the first checkpoint of continuous transforms.
(date) When using time-based synchronization, this timestamp indicates the upper bound of data that is included in the checkpoint.
(date) The timestamp of the checkpoint, which indicates when the checkpoint was created.
(integer) The number of operations that have occurred on the source index but have not been applied to the destination index yet. A high number can indicate that the transform is failing to keep up.
(string) Identifier for the transform. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.

(object) For started transforms only, the node upon which the transform is started.

(object) A list of attributes for the node.
(string) The node ephemeral ID.
(string) The unique identifier of the node. For example, "0-o0tOoRTwKFZifatTWKNw".
(string) The node name. For example, 0-o0tOo.
(string) The host and port where transport HTTP connections are accepted. For example,

(string) The status of the transform, which can be one of the following values:

  • aborting: The transform is aborting.
  • failed: The transform failed. For more information about the failure, check the reason field.
  • indexing: The transform is actively processing data and creating new documents.
  • started: The transform is running but not actively indexing data.
  • stopped: The transform is stopped.
  • stopping: The transform is stopping.

(object) An object that provides statistical information about the transform.

(long) The number of documents that have been indexed into the destination index for the transform.
(long) The number of documents that have been processed from the source index of the transform.
(double) Exponential moving average of the duration of the checkpoint, in milliseconds.
(double) Exponential moving average of the number of new documents that have been indexed.
(double) Exponential moving average of the number of documents that have been processed.
(long) The number of indexing failures.
(long) The amount of time spent indexing, in milliseconds.
(long) The number of indices created.
(long) The number of search or bulk index operations processed. Documents are processed in batches instead of individually.
(long) The number of search failures.
(long) The amount of time spent searching, in milliseconds.
(long) The number of search operations on the source index for the transform.
(long) The number of times the transform has been triggered by the scheduler. For example, the scheduler triggers the transform indexer to check for updates or ingest new data at an interval specified in the frequency property.

Response codesedit

404 (Missing resources)
If allow_no_match is false, this code indicates that there are no resources that match the request or only partial matches for the request.


The following example skips for the first five transforms and gets usage information for a maximum of ten results:

GET _transform/_stats?from=5&size=10

The following example gets usage information for the ecommerce_transform transform:

GET _transform/ecommerce_transform/_stats

The API returns the following results:

  "count" : 1,
  "transforms" : [
      "id" : "ecommerce_transform",
      "state" : "indexing",
      "stats" : {
        "pages_processed" : 2,
        "documents_processed" : 1220,
        "documents_indexed" : 13,
        "trigger_count" : 1,
        "index_time_in_ms" : 19,
        "index_total" : 1,
        "index_failures" : 0,
        "search_time_in_ms" : 52,
        "search_total" : 2,
        "search_failures" : 0,
        "exponential_avg_checkpoint_duration_ms" : 77,
        "exponential_avg_documents_indexed" : 2,
        "exponential_avg_documents_processed" : 12
      "checkpointing" : {
        "last" : {
          "checkpoint" : 100,
          "timestamp_millis" : 1561740252497,
          "time_upper_bound_millis" : 1561740192497
        "next" : {
          "checkpoint" : 101,
          "position" : {
            "indexer_position" : {
              "hashtag" : "abcd1234"
            "buckets_position" : {
              "hashtag" : "abcd5678"
          "checkpoint_progress" : {
            "documents_processed": 100,
            "documents_indexed": 1
          "changes_last_detected_at": 1561740629170,
          "timestamp_millis" : 1561740629172,
          "time_upper_bound_millis" : 1561740569172
        "operations_behind": 27000