| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 | [role="xpack"][testenv="basic"][[get-transform-stats]]=== Get {transform} statistics API[subs="attributes"]++++<titleabbrev>Get {transform} statistics</titleabbrev>++++Retrieves usage information for {transforms}.[[get-transform-stats-request]]==== {api-request-title}`GET _transform/<transform_id>/_stats``GET _transform/<transform_id>,<transform_id>/_stats` +`GET _transform/_stats` +`GET _transform/_all/_stats` +`GET _transform/*/_stats` +[[get-transform-stats-prereqs]]==== {api-prereq-title}If the {es} {security-features} are enabled, you must have the following privileges:* `monitor_transform` The built-in `transform_user` role has this privilege. For more information, see <<security-privileges>> and <<built-in-roles>>.[[get-transform-stats-desc]]==== {api-description-title}You can get statistics for multiple {transforms} in a single APIrequest by using a comma-separated list of identifiers or a wildcard expression.You can get statistics for all {transforms} by using `_all`, byspecifying `*` as the `<transform_id>`, or by omitting the`<transform_id>`.[[get-transform-stats-path-parms]]==== {api-path-parms-title}`<transform_id>`::(Optional, string)include::{docdir}/rest-api/common-parms.asciidoc[tag=transform-id-wildcard]  [[get-transform-stats-query-parms]]==== {api-query-parms-title}`allow_no_match`::(Optional, boolean)include::{docdir}/rest-api/common-parms.asciidoc[tag=allow-no-match-transforms1]`from`::(Optional, integer)include::{docdir}/rest-api/common-parms.asciidoc[tag=from-transforms]`size`::(Optional, integer)include::{docdir}/rest-api/common-parms.asciidoc[tag=size-transforms][role="child_attributes"][[get-transform-stats-response]]==== {api-response-body-title}The API returns an array of statistics objects for {transforms}, which aresorted by the `id` value in ascending order. All of these properties areinformational; you cannot update their values.//Begin checkpointing`checkpointing`::(object) Contains statistics about <<transform-checkpoints,checkpoints>>.+.Properties of `checkpointing`[%collapsible%open]====`changes_last_detected_at`:::(date)include::{docdir}/rest-api/common-parms.asciidoc[tag=checkpointing-changes-last-detected-at]//Begin checkpointing.last`last`:::(object) Contains statistics about the last completed checkpoint. +.Properties of `last`[%collapsible%open]=====`checkpoint`::::(integer) The sequence number for the checkpoint.`time_upper_bound_millis`::::(date) When using time-based synchronization, this timestamp indicates theupper bound of data that is included in the checkpoint.`timestamp_millis`::::(date) The timestamp of the checkpoint, which indicates when the checkpointwas created.=====//End checkpointing.last//Begin checkpointing.next`next`:::(object) Contains statistics about the next checkpoint that is currently inprogress. This object appears only when the {transform} `state` is `indexing`.+.Properties of `next`[%collapsible%open]=====`checkpoint`::::(integer) The sequence number for the checkpoint.`checkpoint_progress`::::(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 forbatch {transforms} and the first checkpoint of {ctransforms}.`time_upper_bound_millis`::::(date) When using time-based synchronization, this timestamp indicates theupper bound of data that is included in the checkpoint.`timestamp_millis`::::(date) The timestamp of the checkpoint, which indicates when the checkpoint wascreated.=====//End checkpointing.next`operations_behind`:::(integer) The number of operations that have occurred on the source index buthave not been applied to the destination index yet. A high number can indicatethat the {transform} is failing to keep up. ====//End checkpointing`id`::(string)include::{docdir}/rest-api/common-parms.asciidoc[tag=transform-id]//Begin node`node`::(object) For started {transforms} only, the node upon which the {transform} isstarted.+.Properties of `node`[%collapsible%open]====`attributes`:::(object) A list of attributes for the node.`ephemeral_id`:::(string) The node ephemeral ID.`id`:::(string) The unique identifier of the node. For example, "0-o0tOoRTwKFZifatTWKNw".`name`:::(string) The node name. For example, `0-o0tOo`.`transport_address`:::(string) The host and port where transport HTTP connections are accepted. Forexample, `127.0.0.1:9300`.====//End node`reason`::(string)include::{docdir}/rest-api/common-parms.asciidoc[tag=state-transform-reason]`state`::(string)include::{docdir}/rest-api/common-parms.asciidoc[tag=state-transform]//Begin stats`stats`::(object) An object that provides statistical information about the {transform}.+.Properties of `stats`[%collapsible%open]====`documents_indexed`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=docs-indexed]`documents_processed`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=docs-processed]`exponential_avg_checkpoint_duration_ms`:::(double)include::{docdir}/rest-api/common-parms.asciidoc[tag=exponential-avg-checkpoint-duration-ms]`exponential_avg_documents_indexed`:::(double)include::{docdir}/rest-api/common-parms.asciidoc[tag=exponential-avg-documents-indexed]`exponential_avg_documents_processed`:::(double)include::{docdir}/rest-api/common-parms.asciidoc[tag=exponential-avg-documents-processed]`index_failures`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=index-failures]`index_time_in_ms`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=index-time-ms]`index_total`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=index-total]`pages_processed`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=pages-processed]`processing_time_in_ms`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=processing-time-ms]`processing_total`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=processing-total]`search_failures`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=search-failures]`search_time_in_ms`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=search-time-ms]`search_total`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=search-total]`trigger_count`:::(long)include::{docdir}/rest-api/common-parms.asciidoc[tag=trigger-count]====//End stats  [[get-transform-stats-response-codes]]==== {api-response-codes-title}`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. [[get-transform-stats-example]]==== ExamplesThe following example skips for the first five {transforms} andgets usage information for a maximum of ten results: [source,console]--------------------------------------------------GET _transform/_stats?from=5&size=10--------------------------------------------------// TEST[skip:todo]The following example gets usage information for the {transform}:[source,console]--------------------------------------------------GET _transform/ecommerce-customer-transform/_stats--------------------------------------------------// TEST[skip:todo]The API returns the following results:[source,console-result]----{  "count" : 1,  "transforms" : [    {      "id" : "ecommerce-customer-transform",      "state" : "started",      "node" : {        "id" : "cpTIGMsVQ8Gqwqlxxxxxxx",        "name" : "my.home",        "ephemeral_id" : "5-L21nFsQxxxxxxxxxx-xx",        "transport_address" : "127.0.0.1:9300",        "attributes" : { }      },      "stats" : {        "pages_processed" : 78,        "documents_processed" : 6027,        "documents_indexed" : 68,        "trigger_count" : 168,        "index_time_in_ms" : 412,        "index_total" : 20,        "index_failures" : 0,        "search_time_in_ms" : 353,        "search_total" : 78,        "search_failures" : 0,        "processing_time_in_ms" : 8,        "processing_total" : 78,        "exponential_avg_checkpoint_duration_ms" : 97.30637923893185,        "exponential_avg_documents_indexed" : 2.2064915040974062,        "exponential_avg_documents_processed" : 179.89419945785045      },      "checkpointing" : {        "last" : {          "checkpoint" : 20,          "timestamp_millis" : 1585344558220,          "time_upper_bound_millis" : 1585344498220        },        "changes_last_detected_at" : 1585344558219      }    }  ]}----
 |