2017-01-31 4 views
0

Я использую logstash для получения данных из базы данных sql. Существует поле, называемое «код», в котором содержание имеет эту структуру:Измените содержимое поля, используя logstash

PO0000001209

ST0000000909

И то, что я хотел бы сделать, это удалить 6 нулей после букв, чтобы получить следующий результат:

PO1209

ST0909

вложу результат другое поле под названием «code_short» и использовать его для моего запроса в elasticsearch. Я настроил вход и вывод в logstash, но я не уверен, как это сделать, используя grok или, возможно, мутировать фильтр.

Я прочитал несколько примеров, но я совершенно новый по этому вопросу, и я немного застрял.

Любая помощь будет оценена по достоинству. Благодарю.

ответ

0

Вы можете использовать mutate/gsub фильтр для этого, но что заменит значение code поле:

filter { 
    mutate { 
    gsub => [ 
     "code", "000000", "", 
    ] 
    } 
} 

Другой вариант заключается в использовании grok фильтр так:

filter { 
    grok { 
    match => { "code" => "(?<prefix>[a-zA-Z]+)000000%{INT:suffix}" } 
    add_field => { "code_short" => "%{prefix}%{suffix}"} 
    } 
} 
+0

Благодарю вас, много за вашу помощь Вал, это сработало отлично !!! – Ubbi099

+0

Удивительный, рад, что это сработало! Просто из любопытства, какое решение вы выбрали? – Val

+0

Я использовал второй, он точно соответствует тому, что я искал, спасибо! – Ubbi099