elasticsearch Logstash(使用正则表达式提取字段的部分)
我正在使用Kafka插件从Kafka向logstash输入数据
elasticsearch Logstash(使用正则表达式提取字段的部分),
elasticsearch,logstash,elastic-stack,logstash-grok,logstash-configuration,
elasticsearch,Logstash,Elastic Stack,Logstash Grok,Logstash Configuration,我正在使用Kafka插件从Kafka向logstash输入数据 input { kafka { bootstrap_servers => ["{{ kafka_bootstrap_server }}"] codec => "json" group_id => "{{ kafka_consumer_group_id }}" auto_offset_reset => "earliest"
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" }
}
}
因此,我的es索引最终是摄取abc YYYY MM DD
摄取xyz YYYY MM DD 如何将索引前缀设置为 abc YYYY MM DD&xyz YYYY MM DD 通过去掉公共摄取前缀 匹配它的正则表达式是:
(?!ingest)\b(?)\S+
但我不确定它在配置中的位置
谢谢 好吧,我想如果有人遇到类似的问题, 我基本上使用了gsub过滤器,而不是过滤器和grok 这将用argument3中传递的文本替换任何匹配的文本
filter {
mutate {
rename => { "[@metadata][kafka]" => "kafka"}
gsub => [ "[@metadata][index_prefix]", "ingest-", "" ]
}
}
考虑更新问题,澄清问题。给出一个你期望的输入和输出的例子。你想如何“使用正则表达式”?在grok过滤器中?当然,让我用一个更清晰的例子来澄清这一点,让它更详细,希望能有所帮助:)
filter {
mutate {
rename => { "[@metadata][kafka]" => "kafka"}
gsub => [ "[@metadata][index_prefix]", "ingest-", "" ]
}
}