【问题标题】:Can I delete the message field from Logstash?我可以从 Logstash 中删除消息字段吗?
【发布时间】:2014-09-24 00:49:11
【问题描述】:

我有一个基本的 Logstash -> Elasticsearch 设置,事实证明在 logstash 过滤器完成其工作后不需要“消息”字段 - 将此原始消息字段存储到 elasticsearch 只会将不必要的数据添加到存储 imo。

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

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

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

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

    mutate
    {
         remove_field => [ "message" ]
    }
    

    【讨论】:

    • 专业提示:大多数过滤器(例如 grok)也允许 remove_field 选项,并且只有在过滤器没有遇到错误时才会删除该字段。这比使用额外的 mutate 过滤器更安全、更容易。
    【解决方案2】:

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

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

    【讨论】:

    • 这个使我的 kafka 输出崩溃,只有 remove_field 部分,不知道为什么:(
    【解决方案3】:

    我会在 Ben Lim 的答案中添加以下内容作为评论,但我不知道如何在评论中添加代码块,甚至不知道这是否可能......

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

    例如,以下输入和编解码器的组合(基于 TCP 的 JSON 行)不会创建 message 字段:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-24
      • 2014-02-13
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多