日期索引名称处理器
date_index_name
处理器用于根据文档中的日期或时间戳字段,将文档指向正确的基于时间的索引。该处理器将 _index
元数据字段设置为日期数学索引名称表达式。然后,处理器从正在处理的文档的 field
字段中获取日期或时间戳,并将其格式化为日期数学索引名称表达式。提取的日期、index_name_prefix
值和 date_rounding
值然后组合以创建日期数学索引表达式。例如,如果 field
字段包含值 2023-10-30T12:43:29.000Z
,并且 index_name_prefix
设置为 week_index-
,date_rounding
设置为 w
,那么日期数学索引名称表达式将是 week_index-2023-10-30
。您可以使用 date_formats
字段指定日期数学索引表达式中的日期应如何格式化。
以下是 date_index_name
处理器的语法
{
"date_index_name": {
"field": "your_date_field or your_timestamp_field",
"date_rounding": "rounding_value"
}
}
配置参数
下表列出了 date_index_name
处理器的必需和可选参数。
参数 | 必需/可选 | 描述 | |
---|---|---|---|
field | 必需 | 传入文档中的日期或时间戳字段。支持模板代码片段。 | |
date_rounding | 必需 | 索引名称中的舍入日期格式。有效值包括 y (年)、M (月)、w (周)、d (日)、h (小时)、m (分钟)和 s (秒)。 | |
date_formats | 可选 | 用于解析日期或时间戳字段的日期格式数组。有效选项包括 Java 时间模式或以下格式之一:ISO8601、UNIX、UNIX_MS 或 TAI64N。默认为 yyyy-MM-dd'T'HH:mm:ss.SSSXX 。 | |
index_name_format | 可选 | 日期格式。默认为 yyyy-MM-dd 。支持模板代码片段。 | |
index_name_prefix | 可选 | 要附加在日期之前的索引名称前缀。支持模板代码片段。 | |
description | 可选 | 处理器的简要描述。 | |
if | 可选 | 运行此处理器的条件。 | |
ignore_failure | 可选 | 如果设置为 true ,则忽略失败。默认为 false 。 | |
区域设置 | 区域设置 | 可选 | 解析日期月份名称和星期几时使用的区域设置。默认为 ENGLISH 。支持模板代码片段。 |
on_failure | 可选 | 处理器失败时要运行的处理器列表。 | |
tag | 可选 | 处理器的标识符标签。有助于调试以区分相同类型的处理器。 | |
timezone | 可选 | 解析日期时使用的时间区。默认为 UTC 。 |
使用处理器
按照以下步骤在管道中使用处理器。
步骤 1:创建管道。
以下查询创建一个名为 date-index-name1
的管道,该管道使用 date_index_name
处理器将日志索引到每月索引中
PUT /_ingest/pipeline/date-index-name1
{
"description": "Create weekly index pipeline",
"processors": [
{
"date_index_name": {
"field": "date_field",
"index_name_prefix": "week_index-",
"date_rounding": "w",
"date_formats": ["YYYY-MM-DD"]
}
}
]
}
步骤 2 (可选):测试管道。
建议在摄取文档之前测试您的管道。
要测试管道,请运行以下查询
POST _ingest/pipeline/date-index-name1/_simulate
{
"docs": [
{
"_index": "testindex1",
"_id": "1",
"_source": {
"date_field": "2023-10-30"
}
}
]
}
响应
以下示例响应确认管道按预期工作
{
"docs": [
{
"doc": {
"_index": "<week_index-{2023-10-01||/w{yyyy-MM-dd|UTC}}>",
"_id": "1",
"_source": {
"date_field": "2023-10-30"
},
"_ingest": {
"timestamp": "2023-11-13T18:23:10.408593092Z"
}
}
}
]
}
步骤 3:摄入文档。
以下查询将文档摄取到名为 testindex1
的索引中
PUT testindex1/_doc/1?pipeline=date-index-name1
{
"date_field": "2023-10-30"
}
响应
此请求将文档索引到 week_index-2023-10-23
索引中,并且由于管道按周舍入,所有带有该周时间戳的文档都将被索引到同一个索引中。
{
"_index": "week_index-2023-10-30",
"_id": "1",
"_version": 4,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 1
}
步骤 4(可选):检索文档。
要检索文档,请运行以下查询
GET week_index-2023-10-30/_doc/1