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

-

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

timeout

60 秒

等待索引 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,因此此处应为空