2014-09-24 119 views
15

我有一个基本的Logstash - > Elasticsearch设置,事实证明logstash过滤器完成工作后不需要'message'字段 - 将这个原始消息字段存储到elasticsearch只会将不必要的数据添加到存储imo。我可以从Logstash中删除消息字段吗?

我可以安全地删除这个字段,它会给ES带来什么麻烦吗?建议或阅读欢迎,谢谢大家。

回答

24

不,它不会给ES带来任何麻烦。如果冗余或未使用,则可以删除message字段。

您可以将此filter添加到过滤器的末尾。

mutate 
{ 
    remove_field => [ "message" ] 
} 
+1

普罗蒂普:大多数过滤器(如神交)还允许remove_field选项,并且将只有在过滤器没有遇到错误时才删除该字段。这比使用额外的mutate过滤器更安全和简单。 – 2017-05-11 05:58:09

4

您还可以在json过滤器中执行此操作。

filter { 
    json { 
    source => "message" 
    remove_field => ["message"] 
    } 
} 
0

我会增加以下内容作为由本林答案评论,但我不知道如何添加注释代码块,甚至是否可行?

如果您可以使用不会创建message字段的输入和编解码器组合,则无需将其删除。

例如,以下输入和编解码器(JSON线通过TCP)的组合不创建message字段:

input { 
    tcp { 
    port => 5044 
    codec => json_lines 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["localhost"] 
    document_type => "mytype" 
    index => "myindex" 
    } 
}