【问题标题】:Can't clone a field in Logstash and only lowercase one of them无法克隆 Logstash 中的字段,只能克隆其中一个
【发布时间】:2016-03-03 04:32:27
【问题描述】:

我正在使用 Logstash RSS 输入来收集和标记 Google 新闻提醒。为了正确标记,我想先对文本进行规范化,同时保持原来的大小写在 UI 上显示。

我尝试了以下方法,但每个组合似乎都以原始字段和克隆字段小写结尾,而没有专门询问 Logstash。

方法一 - 使用 mutate { add_field

input {
 rss {  [my RSS feed URLs] } 
}

filter {
 mutate
    {
        add_field => ["displayTitle", "%{@title}"] }
 mutate
    {
        add_field => ["displayText", "%{@message}"] }
 mutate {
    lowercase => [ "title","message" ] }


if "3d-print" in [title] or "3d-print" in [message] { mutate { add_tag => "3d printing" } }

output {}

方法二-使用Ruby代码克隆事件

input {
 rss {  [my RSS feed URLs] } 
}

filter {

 ruby {
       code => "event['displayTitle'] = event['title']" }
 ruby {
       code => "event['displayText'] = event['message']" }


 mutate {
    lowercase => [ "title","message" ] }

if "3d-print" in [title] or "3d-print" in [message] { mutate { add_tag => "3d printing" } }

output {}

方法三-使用Clone插件克隆事件

input {
 rss {  [my RSS feed URLs] } 
}

filter {
clone {
    add_field => { "%{title}" => "displayTitle" } }

 mutate {
    lowercase => [ "title","message" ] }

if "3d-print" in [title] or "3d-print" in [message] { mutate { add_tag => "3d printing" } }

output {}

所有这三种方法都会产生输出,其中 'displayTitle' 和 'title' 字段都是小写的,即使我只在 title 字段上使用了 mutate { lowercase =>。

“displayText”和“message”字段也是如此。我希望 displayTitle 和 displayMessage 字段保留原始大小写。

感谢您的帮助!

【问题讨论】:

  • 尝试在第二个过滤器{}块中使用小写字母。
  • 感谢@AlainCollins!这似乎确实有效。

标签: ruby logstash logstash-configuration


【解决方案1】:

正如@alain-collins 所指出的,您必须在第二个块中使用小写。

原因与logstash的工作原理有关。它从 filter 类继承了像 add_field 这样的方法。只有在完成所有 mutate 过滤器后,才会调用 add_field。

所以你需要这样做:

mutate { 
  add_field => { 
    "displayTitle" => "%{title}",
    "displayMessage" => "%{message}"
  } 
}
mutate { lowercase => [ "title","message" ] }

如果您在最后添加 .clone,您的 ruby​​ 版本就可以使用。没有它,它会制作字符串的浅表副本,因此当您将其小写时,它会被修改为相同的字符串。

【讨论】:

  • 非常感谢@Alcanzar。我很欣赏对底层功能的解释。我尝试了 Alain 的建议,并且在我将 add_field {} 块移到最后,在其他过滤器块之后。
猜你喜欢
  • 2013-11-05
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 2013-08-07
相关资源
最近更新 更多