Elasticsearch + Logstash: как добавить поля на основе существующих данных во время импорта - PullRequest
0 голосов
/ 03 июня 2018

В настоящее время я импортирую данные в Elastic через logstash, в настоящее время читая csv-файлы.

Теперь предположим, что у меня есть два числовых поля в csv, age и weight.Мне нужно было бы добавить 3-е поле на лету, сделав математику о возрасте, весе и других внешних данных (или результат функции);и мне нужно, чтобы это 3-е поле было создано при импорте данных.

Есть ли способ сделать это?Что может быть лучшей практикой?

1 Ответ

0 голосов
/ 03 июня 2018

Во всех разделах фильтра Logstash вы можете добавлять поля через add_field, но обычно это статические данные.

Для математических расчетов требуется отдельный плагин

Как уже упоминалось, плагин ruby ​​filter, вероятно, будет вашим лучшим вариантом.Вот пример фрагмента для вашего конвейера

filter {

     # add calculated field, for example BMI, from height and weight 
    ruby {
        code => "event['data']['bmi'] = event['data']['weight'].to_i / (event['data']['height'].to_i)"
   }
}

В качестве альтернативы, в Кибане есть Сценарии полей , предназначенные для визуализации, но не запрашиваемые

...