[role="xpack"] [testenv="basic"] [[get-transform-stats]] === Get {transform} statistics API [subs="attributes"] ++++ Get {transform} statistics ++++ Retrieves usage information for {transforms}. [[get-transform-stats-request]] ==== {api-request-title} `GET _transform//_stats` `GET _transform/,/_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 <> and <>. [[get-transform-stats-desc]] ==== {api-description-title} 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 ``, or by omitting the ``. [[get-transform-stats-path-parms]] ==== {api-path-parms-title} ``:: (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 are sorted by the `id` value in ascending order. All of these properties are informational; you cannot update their values. //Begin checkpointing `checkpointing`:: (object) Contains statistics about <>. + .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 the upper bound of data that is included in the checkpoint. `timestamp_millis`:::: (date) The timestamp of the checkpoint, which indicates when the checkpoint was created. ===== //End checkpointing.last //Begin checkpointing.next `next`::: (object) Contains statistics about the next checkpoint that is currently in progress. 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 for batch {transforms} and the first checkpoint of {ctransforms}. `time_upper_bound_millis`:::: (date) When using time-based synchronization, this timestamp indicates the upper bound of data that is included in the checkpoint. `timestamp_millis`:::: (date) The timestamp of the checkpoint, which indicates when the checkpoint was created. ===== //End checkpointing.next `operations_behind`::: (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. ==== //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} is started. + .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. For example, `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]] ==== Examples The following example skips for the first five {transforms} and gets 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 } } ] } ----