索引操作
Elastic Stack Serverless
使用 index
操作将数据索引到 Elasticsearch 中。有关支持的属性,请参阅索引操作属性。
以下代码段显示了一个简单的 index
操作定义
"actions" : {
"index_payload" : {
"condition": { ... },
"transform": { ... },
"index" : {
"index" : "my-index-000001",
"doc_id": "my-id"
}
}
}
名称 | 必需 | 默认 | 描述 |
---|---|---|---|
index |
是* | - | 要索引到的索引、别名或数据流。还支持日期数学表达式,例如 <my-index-{now/d}> 。*如果您动态设置 _index 值,则此参数不是必需的。请参阅多文档支持。 |
doc_id |
否 | - | 文档的可选 _id 。 |
op_type |
否 | index |
索引操作的 op_type。必须是 index 或 create 之一。如果 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": {}
}
}
- 文档的索引
- 文档的可选
_id
- 从原始文档派生的新
severity
字段 - 作为文档数组的有效负载
_doc
字段 - 由于
_index
是按文档通知的,因此该字段应为空