Gsub 处理器
gsub
处理器对传入文档中的字符串字段执行正则表达式搜索和替换操作。如果字段包含字符串数组,则该操作将应用于数组中的所有元素。但是,如果字段包含非字符串值,则处理器会抛出异常。gsub
处理器的用例包括从日志消息或用户生成的内容中删除敏感信息、规范化数据格式或约定(例如,转换日期格式、删除特殊字符),以及从字段值中提取或转换子字符串以进行进一步处理或分析。
以下是 gsub
处理器的语法:
"gsub": {
"field": "field_name",
"pattern": "regex_pattern",
"replacement": "replacement_string"
}
配置参数
下表列出了 gsub
处理器的必需参数和可选参数。
参数 | 必需/可选 | 描述 |
---|---|---|
field | 必需 | 要应用替换的字段。 |
模式 | 必需 | 要替换的模式。 |
replacement | 必需 | 将替换匹配模式的字符串。 |
target_field | 可选 | 存储解析数据的字段名称。如果未指定 target_field ,则解析数据将替换 field 字段中的原始数据。默认值为 field 。 |
if | 可选 | 运行处理器的条件。 |
ignore_missing | 可选 | 指定处理器是否应忽略不包含指定字段的文档。默认为 false 。 |
ignore_failure | 可选 | 指定即使处理器遇到错误是否继续执行。如果设置为 true ,则忽略故障。默认值为 false 。 |
on_failure | 可选 | 处理器失败时要运行的处理器列表。 |
tag | 可选 | 处理器的标识符标签。有助于调试以区分相同类型的处理器。 |
使用处理器
按照以下步骤在管道中使用处理器。
步骤 1:创建管道
以下查询创建一个名为 gsub_pipeline
的管道,该管道使用 gsub
处理器将 message
字段中所有出现的单词 error
替换为 warning
:
PUT _ingest/pipeline/gsub_pipeline
{
"description": "Replaces 'error' with 'warning' in the 'message' field",
"processors": [
{
"gsub": {
"field": "message",
"pattern": "error",
"replacement": "warning"
}
}
]
}
步骤 2(可选):测试管道
建议在摄取文档之前测试您的管道。
要测试管道,请运行以下查询
POST _ingest/pipeline/gsub_pipeline/_simulate
{
"docs": [
{
"_source": {
"message": "This is an error message"
}
}
]
}
响应
以下响应确认管道按预期工作
{
"docs": [
{
"doc": {
"_index": "_index",
"_id": "_id",
"_source": {
"message": "This is an warning message"
},
"_ingest": {
"timestamp": "2024-05-22T19:47:00.645687211Z"
}
}
}
]
}
步骤 3:摄取文档
以下查询将文档摄取到名为 logs
的索引中:
PUT logs/_doc/1?pipeline=gsub_pipeline
{
"message": "This is an error message"
}
响应
以下响应显示请求已将文档索引到名为 logs
的索引中,并且 gsub
处理器已将 message
字段中所有出现的单词 error
替换为 warning
:
{
"_index": "logs",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
步骤 4(可选):检索文档
要检索文档,请运行以下查询
GET logs/_doc/1
响应
以下响应显示了 message
字段值已修改的文档:
{
"_index": "logs",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"message": "This is an warning message"
}
}