Insérer des données issues d’un fichier CSV dans ELASTICSEARCH
Un cas que j’ai du implémenter avec le même schéma que précédemment:
Prendre des fichiers CSV en entrée et les insérer facilement dans ELASTICSEARCH au fil de l’eau. J’ai donc utilisé LOGSTASH pour réaliser cette manipulation.
Cet outil sert à la base comme agrégateur de logs. Il est désormais un mini ETL .
Configuration de LOGSTASH
input { file { codec => plain{ charset => "ISO-8859-1" } path => ["/data/input/*.csv"] sincedb_path => "/data/.sincedb_path" start_position => "beginning" } } filter { if [message] =~ /^"COL1","COL2"/ { drop { } } csv { columns => ["COL1","COL2",...] separator => "," source => message remove_field => ["message","host","path","@version","@timestamp"] } } output { elasticsearch { embedded => false host => "localhost" cluster => "elasticsearch" node_name => "localhost" index => "index" index_type => "type" } }
Explication
Dans le champ input, je spécifie ou est le fichier, ou est l’indicateur de parcours et ou est-ce que je démarre la lecture du fichier
Dans le champ filter , j’ enlève la ligne d’en-tête, puis dans l’élément csv, je spécifie les colonnes et supprime les champs techniques
Enfin, dans l’élément output, j’indique les coordonnées du serveur elasticsearch
Exécution
Il faut d’abord exécuter elasticsearch. Puis démarrer l’instance logstash comme suit :
logstash.bat agent -v -f "input-csv.conf"