Grok с отсутствующими значениями с использованием logstash

Я пытаюсь проверить эти входы с помощью logstash,

Nicolas Lauri 34 
Nicolas 33  #there is one space and it not works.
Nicolas  33 #there are two spaces and it works.

с этим рисунком

(%{WORD:firstname})? (%{WORD:lastname})? (%{NUMBER:age})?

С помощью ()? Я игнорирую отсутствующие значения и говорю, что это необязательные варианты, но проблема в том, что мы должны ставить пробелы между значениями, чтобы они работали.

я имею в виду, если у меня есть этот ввод:

Nicolas  19

Я должен поставить ровно два пробела между Николасом и 19, чтобы правильно его вычислить.

Что мне делать, чтобы не ставить пробелы?


person Morito    schedule 13.04.2015    source источник


Ответы (1)


Два варианта:

  1. Поместите пробел в необязательный шаблон: (% {WORD})?
  2. Разрешите один или несколько пробелов между элементами:% {WORD} +% {WORD}
person Alain Collins    schedule 13.04.2015
comment
Не уверен, что это помогает, поскольку все поля являются необязательными (что может не иметь смысла в первую очередь). При первом варианте совпадения не будет, если столбец имени отсутствует. - person Magnus Bäck; 14.04.2015
comment
@ MagnusBäck да, вы правы, это просто пример, на самом деле у меня очень 3 разные строки в моем файле брандмауэра журнала, и я хочу: просмотреть его, и результат будет сохранен в кластере эластичного поиска с использованием выделенного вывода эластичного поиска. что я должен делать :( ? - person Morito; 14.04.2015
comment
OP задал конкретный вопрос здесь: stackoverflow.com/questions/29623521/ - person Magnus Bäck; 14.04.2015