Logstash(使用正则表达式提取部分字段)

Logstash (Extractic parts of fields using regex)

我正在使用 Kafka 插件将数据从 kafka 输入到 logstash。

input {
    kafka {
        bootstrap_servers => ["{{ kafka_bootstrap_server }}"]
        codec => "json"
        group_id => "{{ kafka_consumer_group_id }}"
        auto_offset_reset => "earliest"
        topics_pattern => ".*" <- This line ensures it reads from all kafka topics
        decorate_events => true
        add_field => { "[@metadata][label]" => "kafka-read" }

    }
}

kafka主题的格式 摄取abc& 摄取 xyz

我使用以下过滤器通过设置 [@metadata][index_prefix] 字段来指定 ES 索引应该结束的位置。

filter {
    mutate {
        add_field => { 
                       "[@metadata][index_prefix]" => "%{[@metadata][kafka][topic]}"
                     }
        remove_field => ["[kafka][partition]", "[kafka][key]"]
    }
    if [message] {
        mutate {
          add_field => { "[pipeline_metadata][normalizer][original_raw_message]" => "%{message}" }
        }
    }
}

所以我的 es 索引最终是
摄取-abc-YYYY-MM-DD
摄取-xyz-YYYY-MM-DD

如何将 index_prefix 设置为 改为 abc-YYYY-MM-DD & xyz-YYYY-MM-DD 通过去掉 commong ingest- prefix

匹配的正则为:(?!ingest)\b(?!-)\S+ 但我不确定它在配置中的位置。

谢谢!

好的,所以我想通了,如果有人遇到过类似的问题, 我基本上使用 gsub 过滤器而不是过滤器和 grok,

这会将任何匹配的文本替换为参数 3 中传递的文本

filter {
    mutate {
        rename => { "[@metadata][kafka]"  => "kafka"}
        gsub => [ "[@metadata][index_prefix]", "ingest-", "" ]
    }
}