按名称模式删除字段

时间:2015-07-13 14:17:47

标签: elasticsearch logstash

我们目前正在使用带有elasticsearch的logstash来记录一些应用程序事件。 某些事件包含动态命名的字段 我们想要在进入elasticsearch之前应用将删除或合并它们的过滤器 例如:

{  
  "Root": {  
    "EventType": "Info",  
    "Timestamp": 20150713153757.758  
  },  
  "Event": {  
    "Message": "itemsViews Created in 1 mSec",  
    "Cache_11542": true,  
    "Cache_10242": false,  
    "Cache_55240": 124  
  }  
} 

在这种情况下,我们希望删除对象Event下的“Cache_”开头的所有字段。

所以输出到elasticsearch将是

{  
  "Root": {  
    "EventType": "Info",  
    "Timestamp": 20150713153757.758  
  },  
  "Event": {  
    "Message": "itemsViews Created in 1 mSec"
  }  
}

有没有办法在logstash配置文件中定义填充程序来实现此目的?

非常感谢提前。

1 个答案:

答案 0 :(得分:-1)

看起来@ {magnus-bäck指出的Ruby filter solution可能是您的解决方案。我最初使用“remove_field”数组和gsub过滤器建议mutate filter。 Gsub与正则表达式匹配您的Cache *字段,然后可以将其重命名为变量以用于mutate。但是,由于你有n个Cache字段,我更喜欢ruby脚本。 :)