123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- [role="xpack"]
- [[update-transform]]
- = Update {transform} API
- [subs="attributes"]
- ++++
- <titleabbrev>Update {transform}</titleabbrev>
- ++++
- Updates certain properties of a {transform}.
- [[update-transform-request]]
- == {api-request-title}
- `POST _transform/<transform_id>/_update`
- [[update-transform-prereqs]]
- == {api-prereq-title}
- Requires the following privileges:
- * cluster: `manage_transform` (the `transform_admin` built-in role grants this
- privilege)
- * source indices: `read`, `view_index_metadata`
- * destination index: `read`, `index`. If a `retention_policy` is configured, `delete` index privilege is
- also required.
- [[update-transform-desc]]
- == {api-description-title}
- This API updates an existing {transform}. The list of properties that you can
- update is a subset of the list that you can define when you create a {transform}.
- When the {transform} is updated, a series of validations occur to ensure its
- success. You can use the `defer_validation` parameter to skip these checks.
- All updated properties except description do not take effect until after the
- {transform} starts the next checkpoint. This is so there is data consistency in
- each checkpoint.
- [IMPORTANT]
- ====
- * Your {transform} remembers which roles the user who updated it had at the time
- of update and runs with those privileges. If you provide
- <<http-clients-secondary-authorization,secondary authorization headers>>, those
- credentials are used instead.
- * You must use {kib} or this API to update a {transform}. Directly updating any
- {transform} internal, system, or hidden indices is not supported and may cause
- permanent failure.
- ====
- [[update-transform-path-parms]]
- == {api-path-parms-title}
- `<transform_id>`::
- (Required, string)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-id]
- [[update-transform-query-parms]]
- == {api-query-parms-title}
- `defer_validation`::
- (Optional, Boolean) When `true`, deferrable validations are not run. This
- behavior may be desired if the source index does not exist until after the
- {transform} is updated.
- `timeout`::
- (Optional, time)
- Period to wait for a response. If no response is received before the timeout
- expires, the request fails and returns an error. Defaults to `30s`.
- [role="child_attributes"]
- [[update-transform-request-body]]
- == {api-request-body-title}
- `description`::
- (Optional, string) Free text description of the {transform}.
- //Begin dest
- `dest`::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=dest]
- +
- .Properties of `dest`
- [%collapsible%open]
- ====
- `index`:::
- (Required, string)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=dest-index]
- `pipeline`:::
- (Optional, string)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=dest-pipeline]
- ====
- //End dest
- `frequency`::
- (Optional, <<time-units, time units>>)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=frequency]
- //Begin _meta
- `_meta`::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-metadata]
- //End _meta
- //Begin retention policy
- `retention_policy`::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-retention]
- +
- .Properties of `retention_policy`
- [%collapsible%open]
- ====
- `time`:::
- (Required, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-retention-time]
- +
- .Properties of `time`
- [%collapsible%open]
- =====
- `field`:::
- (Required, string)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-retention-time-field]
- `max_age`:::
- (Required, <<time-units, time units>>)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-retention-time-max-age]
- =====
- ====
- //End retention policy
- //Begin settings
- `settings`::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings]
- +
- .Properties of `settings`
- [%collapsible%open]
- ====
- `align_checkpoints`:::
- (Optional, boolean)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-align-checkpoints]
- `dates_as_epoch_millis`:::
- (Optional, boolean)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-dates-as-epoch-milli]
- `deduce_mappings`:::
- (Optional, boolean)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-deduce-mappings]
- `docs_per_second`:::
- (Optional, float)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-docs-per-second]
- `max_page_search_size`:::
- (Optional, integer)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-max-page-search-size]
- `num_failure_retries`:::
- (Optional, integer)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-num-failure-retries]
- `unattended`:::
- (Optional, boolean)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-settings-unattended]
- ====
- //End settings
- //Begin source
- `source`::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=source-transforms]
- +
- .Properties of `source`
- [%collapsible%open]
- ====
- `index`:::
- (Required, string or array)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=source-index-transforms]
- `query`:::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=source-query-transforms]
- ====
- //End source
- //Begin sync
- `sync`::
- (Optional, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=sync]
- +
- --
- NOTE: You can update these properties only if it is a continuous {transform}. You
- cannot change a batch {transform} into a continuous {transform} or vice versa.
- Instead, clone the {transform} in {kib} and add or remove the `sync` property.
- --
- +
- .Properties of `sync`
- [%collapsible%open]
- ====
- //Begin sync.time
- `time`:::
- (Required, object)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=sync-time]
- +
- .Properties of `time`
- [%collapsible%open]
- =====
- `delay`::::
- (Optional, <<time-units, time units>>)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=sync-time-delay]
- `field`::::
- (Required, string)
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=sync-time-field]
- +
- --
- TIP: In general, it’s a good idea to use a field that contains the
- <<access-ingest-metadata,ingest timestamp>>. If you use a different field,
- you might need to set the `delay` such that it accounts for data transmission
- delays.
- --
- =====
- //End sync.time
- ====
- //End sync
- [[update-transform-example]]
- == {api-examples-title}
- [source,console]
- --------------------------------------------------
- POST _transform/simple-kibana-ecomm-pivot/_update
- {
- "source": {
- "index": "kibana_sample_data_ecommerce",
- "query": {
- "term": {
- "geoip.continent_name": {
- "value": "Asia"
- }
- }
- }
- },
- "description": "Maximum priced ecommerce data by customer_id in Asia",
- "dest": {
- "index": "kibana_sample_data_ecommerce_transform_v2",
- "pipeline": "add_timestamp_pipeline"
- },
- "frequency": "15m",
- "sync": {
- "time": {
- "field": "order_date",
- "delay": "120s"
- }
- }
- }
- --------------------------------------------------
- // TEST[setup:simple_kibana_continuous_pivot]
- When the {transform} is updated, you receive the updated configuration:
- [source,console-result]
- ----
- {
- "id" : "simple-kibana-ecomm-pivot",
- "authorization" : {
- "roles" : [
- "superuser"
- ]
- },
- "version" : "8.4.0",
- "create_time" : 1656113450613,
- "source" : {
- "index" : [
- "kibana_sample_data_ecommerce"
- ],
- "query" : {
- "term" : {
- "geoip.continent_name" : {
- "value" : "Asia"
- }
- }
- }
- },
- "dest" : {
- "index" : "kibana_sample_data_ecommerce_transform_v2",
- "pipeline" : "add_timestamp_pipeline"
- },
- "frequency" : "15m",
- "sync" : {
- "time" : {
- "field" : "order_date",
- "delay" : "120s"
- }
- },
- "pivot" : {
- "group_by" : {
- "customer_id" : {
- "terms" : {
- "field" : "customer_id"
- }
- }
- },
- "aggregations" : {
- "max_price" : {
- "max" : {
- "field" : "taxful_total_price"
- }
- }
- }
- },
- "description" : "Maximum priced ecommerce data by customer_id in Asia",
- "settings" : { }
- }
- ----
- // TESTRESPONSE[s/"version" : "8.4.0"/"version" : $body.version/]
- // TESTRESPONSE[s/"create_time" : 1656113450613/"create_time" : $body.create_time/]
- // TESTRESPONSE[s/"authorization" : \{[^}]*\},//]
|