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:

workflow

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"

Vus : 1184
Publié par Littlewing : 368