正在加载

索引操作

Elastic Stack Serverless

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

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

"actions" : {
  "index_payload" : {
    "condition": { ... },
    "transform": { ... },
    "index" : {
      "index" : "my-index-000001",
      "doc_id": "my-id"
    }
  }
}
  1. 操作的 ID
  2. 一个可选的条件,用于限制操作执行
  3. 一个可选的转换,用于转换有效负载并准备要索引的数据
  4. 数据将写入的索引、别名或数据流
  5. 文档的可选 _id
名称 必需 默认 描述
index 是* - 要索引到的索引、别名或数据流。还支持日期数学表达式,例如 <my-index-{now/d}>

*如果您动态设置 _index 值,则此参数不是必需的。请参阅多文档支持
doc_id - 文档的可选 _id
op_type index 索引操作的 op_type。必须是 indexcreate 之一。如果 index 是数据流,则必须为 create
execution_time_field - 将存储/索引监视执行时间的字段。
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": {}
  }
}
  1. 文档的索引
  2. 文档的可选 _id
  3. 从原始文档派生的新 severity 字段
  4. 作为文档数组的有效负载 _doc 字段
  5. 由于 _index 是按文档通知的,因此该字段应为空
© . All rights reserved.