如何在字段内容的开头添加一个字符?

How can i add a character at the beginning of a field content?

我正在尝试在 logstash 中字段内容的开头添加一个字符。我在网上只找到了如何使用 gsub 插件在最后添加它,如下所示:

dissect {
        mapping => {"message" => "%{message}<%{payload}"}
      }
      mutate {
        gsub => ["payload", "$", "<"]
      }

但是如果我想在开头添加“<”,我该怎么做呢?

您问题中的过滤器使用正则表达式来查找 < 的放置位置。使用 $,它匹配字符串的结尾

mutate {
   gsub => ["payload", "$", "<"]
}

查找字符串开头的正则表达式是 ^。所以你必须像这样修改你的过滤器:

mutate {
   gsub => ["payload", "^", "<"]
}

如果您只想添加不存在的 <

mutate {
   gsub => ["payload", "^", "^(?!<)"]
}

此处正则表达式的 (?!<) 部分检查 < 是否不存在 (negative lookahead);如果已经存在,则正则表达式将不匹配并且不会添加 <