Watcher 索引操作编辑

使用 index 操作将数据索引到 Elasticsearch。有关支持的属性,请参见 索引操作属性

配置索引操作编辑

以下代码片段显示了一个简单的 index 操作定义

"actions" : {
  "index_payload" : { 
    "condition": { ... }, 
    "transform": { ... }, 
    "index" : {
      "index" : "my-index-000001", 
      "doc_id": "my-id" 
    }
  }
}

操作的 ID

一个可选的 条件,用于限制操作执行

一个可选的 转换,用于转换有效负载并准备要索引的数据

将数据写入的索引、别名或数据流

文档的可选 _id

索引操作属性编辑

名称 必需 默认值 描述

index

*

-

要索引的索引、别名或数据流。还支持 <my-index-{now/d}> 这样的日期数学表达式。

*如果您动态设置 _index 值,则不需要此参数。请参见 多文档支持

doc_id

-

文档的可选 _id

op_type

index

索引操作的 op_type。必须是 indexcreate 之一。如果 index 是数据流,则必须为 create

execution_time_field

-

将存储/索引监视执行时间的字段。

timeout

60s

等待索引 API 调用返回的超时时间。如果在此时间内未返回响应,则索引操作超时并失败。此设置会覆盖默认超时时间。

refresh

-

写入请求的 刷新策略 的可选设置

多文档支持编辑

与所有其他操作一样,您可以使用 转换 将当前执行上下文有效负载替换为另一个有效负载,并通过这种方式更改最终索引的文档。

索引操作通过对特殊 _doc 有效负载字段的支持,与转换配合得很好。

解析要索引的文档时,索引操作首先在有效负载中查找 _doc 字段。如果未找到,则将有效负载作为单个文档索引。

如果存在 _doc 字段,则如果该字段包含对象,则将其提取并作为单个文档索引。如果该字段包含对象数组,则每个对象都被视为一个文档,并且索引操作会将它们全部以批量方式索引。

可以为每个文档添加 _index_id 值,以动态设置索引的文档的索引和 ID。

以下代码片段显示了一个多文档 index 操作定义

"actions": {
  "index_payload": {
    "transform": {
      "script": """
      def documents = ctx.payload.hits.hits.stream()
        .map(hit -> [
          "_index": "my-index-000001", 
          "_id": hit._id, 
          "severity": "Sev: " + hit._source.severity 
        ])
        .collect(Collectors.toList());
      return [ "_doc" : documents]; 
      """
    },
    "index": {} 
  }
}

文档的索引

文档的可选 _id

从原始文档派生的新 severity 字段

有效负载 _doc 字段,它是一个文档数组

由于 _index 是按文档告知的,因此这应该为空