更新 Transform API编辑

更新 Transform 的某些属性。

请求编辑

POST _transform/<transform_id>/_update

先决条件编辑

需要以下权限

  • 集群:manage_transformtransform_admin 内置角色授予此权限)
  • 源索引:readview_index_metadata
  • 目标索引:readindex。如果配置了 retention_policy,则还需要 delete 索引权限。

描述编辑

此 API 更新现有的 Transform。您可以更新的属性列表是您在创建 Transform 时可以定义的列表的子集。

更新 Transform 时,会进行一系列验证以确保其成功。您可以使用 defer_validation 参数跳过这些检查。

除描述外,所有更新的属性在 Transform 启动下一个检查点后才会生效。这是为了确保每个检查点中的数据一致性。

  • 您的 Transform 会记住更新它的用户在更新时的角色,并使用这些权限运行。如果您提供 辅助授权标头,则会改用这些凭据。
  • 您必须使用 Kibana 或此 API 来更新 Transform。直接更新任何 Transform 内部、系统或隐藏索引不受支持,并且可能会导致永久性故障。

路径参数编辑

<transform_id>
(必填,字符串)Transform 的标识符。

查询参数编辑

defer_validation
(可选,布尔值)如果为 true,则不运行可延迟的验证。如果源索引在 Transform 更新后才存在,则可能需要此行为。
timeout
(可选,时间)等待响应的时间段。如果在超时到期之前没有收到响应,则请求失败并返回错误。默认为 30s

请求正文编辑

description
(可选,字符串)Transform 的自由文本描述。
dest

(可选,对象)Transform 的目标。

dest 的属性
index
(必填,字符串)Transform 的*目标索引*。

对于 pivot Transform,目标索引的映射将尽可能根据源字段推断出来。如果需要备用映射,请在启动 Transform 之前使用 创建索引 API

对于 latest Transform,永远不会推断映射。如果不希望目标索引的动态映射,请在启动 Transform 之前使用 创建索引 API

aliases
(可选,对象数组)Transform 的目标索引应具有的别名。别名使用 Transform 存储的凭据进行操作,这意味着在创建时提供的辅助凭据(如果同时指定了主要和辅助凭据)。

无论目标索引是由 Transform 创建的还是由用户预先创建的,目标索引都会添加到别名中。

+ .aliases 的属性

详细信息
alias
(必填,字符串)别名的名称。
move_on_creation
(可选,布尔值)目标索引是否应该是此别名中的唯一索引。如果为 true,则在将目标索引添加到此别名之前,将从此别名中删除所有其他索引。默认为 false
pipeline
(可选,字符串)摄取管道的唯一标识符。
frequency
(可选,时间单位)当 Transform 持续运行时,检查源索引中更改的时间间隔。最小值为 1s,最大值为 1h。默认值为 1m
_meta
(可选,对象)定义可选的 Transform 元数据。
retention_policy

(可选,对象)定义 Transform 的保留策略。满足定义条件的数据将从目标索引中删除。

retention_policy 的属性
time

(必填,对象)指定 Transform 使用时间字段来设置保留策略。如果保留策略的 time.field 存在并且包含早于 max.age 的数据,则会删除该数据。

time 的属性
field
(必填,字符串)用于计算文档年龄的日期字段。将 time.field 设置为现有的日期字段。
max_age
(必填,时间单位)指定目标索引中文档的最大期限。早于配置值的文档将从目标索引中删除。
settings

(可选,对象)定义可选的 Transform 设置。

settings 的属性
align_checkpoints
(可选,布尔值)指定是否应针对性能优化 Transform 检查点范围。当在 Transform 配置中将日期直方图指定为组源时,此类优化可以使检查点范围与日期直方图间隔保持一致。因此,目标索引中的文档更新将减少,从而提高整体性能。默认值为 true,这意味着将尽可能优化检查点范围。
dates_as_epoch_millis
(可选,布尔值)定义输出中的日期是应写为 ISO 格式的字符串(默认)还是自纪元以来的毫秒数。对于在版本 7.11 之前创建的 Transform,epoch_millis 一直是默认值。为了获得兼容的输出,请将其设置为 true。默认值为 false
deduce_mappings
(可选,布尔值)指定 Transform 是否应从 Transform 配置中推断目标索引映射。默认值为 true,这意味着将尽可能推断目标索引映射。
docs_per_second
(可选,浮点数)指定每秒输入文档数量的限制。此设置通过在搜索请求之间添加等待时间来限制 Transform。默认值为 null,这将禁用限制。
max_page_search_size
(可选,整数)定义用于每个检查点的复合聚合的初始页面大小。如果发生断路器异常,则页面大小会动态调整为较低的值。最小值为 10,最大值为 65,536。默认值为 500
num_failure_retries
(可选,整数)定义在 Transform 任务标记为 failed 之前可恢复故障的重试次数。最小值为 0,最大值为 100。可以使用 -1 表示无限次。在这种情况下,Transform 永远不会放弃重试可恢复的故障。默认值为集群级设置 num_transform_failure_retries
unattended
(可选,布尔值)如果为 true,则 Transform 以无人值守模式运行。在无人值守模式下,如果发生错误,Transform 会无限期重试,这意味着 Transform 永远不会失败。将重试次数设置为非无限次会导致验证失败。默认为 false
source

(可选,对象)Transform 的数据源。

source 的属性
index

(必填,字符串或数组)Transform 的*源索引*。它可以是单个索引、索引模式(例如,"my-index-*")、索引数组(例如,["my-index-000001", "my-index-000002"])或索引模式数组(例如,["my-index-*", "my-other-index-*"])。对于远程索引,请使用语法 "remote_name:index_name"

如果任何索引位于远程集群中,则主节点和至少一个 Transform 节点必须具有 remote_cluster_client 节点角色。

query
(可选,对象)从源索引中检索数据子集的查询子句。请参阅 查询 DSL
sync

(可选,对象)定义 Transform 持续运行所需的属性。

仅当它是连续 Transform 时,才能更新这些属性。您不能将批处理 Transform 更改为连续 Transform,反之亦然。而是克隆 Kibana 中的 Transform 并添加或删除 sync 属性。

sync 的属性
time

(必填,对象)指定 Transform 使用时间字段来同步源索引和目标索引。

time 的属性
delay
(可选,时间单位)当前时间与最新输入数据时间之间的时间延迟。默认值为 60s
field

(必填,字符串)用于标识源中新文档的日期字段。

通常,最好使用包含 摄取时间戳 的字段。如果使用其他字段,则可能需要设置 delay 以使其考虑数据传输延迟。

示例编辑

response = client.transform.update_transform(
  transform_id: 'simple-kibana-ecomm-pivot',
  body: {
    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'
      }
    }
  }
)
puts response
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"
    }
  }
}

转换更新后,您将收到更新后的配置。

{
  "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" : { }
}