Вы должны быть в состоянии достичь этого с mutate/gsub
фильтром
filter {
mutate {
gsub => [
# replace random num suffix
"fieldname", "_\d+", "",
# replace all dashes with underscores
"fieldname", "-", "_"
]
}
}
Убедитесь заменить fieldname
с фактическим именем поля.
UPDATE
Учитывая ваши комментарии, оказалось, это имена полей, которые являются динамическими и не значение. По этой причине, вы не можете использовать приведенные выше решения, но следующий должно работать, то есть с помощью ruby
filter:
filter {
ruby {
code => "
newhash = {}
event.to_hash.each {|key, value|
if key =~ /^CISCO/ then
newkey = key.gsub(/_\d+/, '').gsub('-', '_')
newhash[newkey] = event[key]
event.remove(key)
end
}
newhash.each {|key,value|
event[key] = value
}
"
}
}
После запуска этого фильтра, ваше мероприятие будет иметь поле A_B_C::D
вместо оригинального A-B-C::D_num
привет Вал, спасибо за ваш ответ! Мне жаль, что я не был более ясен в вопросе. Я не могу установить поле из-за randomNum. что все, что я могу указать, является префиксом имени поля. как «A-B-C :: D_ *» – stefansaye
Так что это ваше имя поля, а не полевое значение, верно? – Val
ДА, имя поля не является значением поля. для моего примера вывод выглядит как A-B-C :: D_ [randomNum] => field_value ...... – stefansaye