Как проанализировать CSV-файл, в котором есть поле с разделителями (запятыми) как значениями - PullRequest
0 голосов
/ 16 марта 2020

пример сообщения - 111 222 333 444 555, val1in6th, val2in6th, 777

Шестой столбец содержит значение, состоящее из запятых (val1in6th, val2in6th - это значение выборки 6-го столбца). Когда я использую простой CSV-фильтр, это сообщение преобразуется в 8 полей. Я хочу иметь возможность сказать фильтру, что val1in6th, val2in6th следует рассматривать как одно значение и помещать в качестве значения 6-го столбца (не допустимо использовать запятую между val1in6th и val2in6th при размещении в качестве вывода в качестве 6-го столбца).

1 Ответ

1 голос
/ 16 марта 2020

измени свой плагин, не больше CSV, но grok filter - сделай c здесь . Затем вы используете отладчик для создания парсера для ваших строк - как этот: https://grokdebug.herokuapp.com/

Для ваших строк вы можете использовать это выражение grok:

%{WORD:FIELD1},%{WORD:FIELD2},%{WORD:FIELD3},%{WORD:FIELD4},%{WORD:FIELD5},%{GREEDYDATA:FIELD6}

или:

%{INT:FIELD1},%{INT:FIELD2},%{INT:FIELD3},%{INT:FIELD4},%{INT:FIELD5},%{GREEDYDATA:FIELD6}

Изменяет типы данных в elasti c первых 5 полей.

Чтобы узнать о синтаксическом анализе csv с фильтром grok в elasti c, вы можете использовать это es официальный блог-справочник , объясняется, как использовать grok с конвейером приема, но то же самое с logsta sh

...