Je fais tutoriel "recherche élastique pour commencer". Malheureusement, ce didacticiel ne couvre pas la première étape, qui consiste à importer la base de données csv
dans elasticsearch.
J'ai cherché sur Google des solutions, mais cela n'a malheureusement pas fonctionné. Voici ce que je veux réaliser et ce que j'ai:
J'ai un fichier avec les données que je veux importer (simplifié)
id,title
10,Homer's Night Out
12,Krusty Gets Busted
Je voudrais l'importer en utilisant logstash
. Après des recherches sur Internet, je me retrouve avec la configuration suivante:
input {
file {
path => ["simpsons_episodes.csv"]
start_position => "beginning"
}
}
filter {
csv {
columns => [
"id",
"title"
]
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "simpsons"
document_type => "episode"
workers => 1
}
}
Je ne parviens pas à spécifier le type de document. Une fois les données importées, je navigue vers http: // localhost: 9200/simpsons/episode/10 Je compte voir le résultat de l'épisode 10.
Bon travail, vous y êtes presque, il ne manque que l'identifiant du document. Vous devez modifier votre sortie elasticsearch
comme ceci:
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "simpsons"
document_type => "episode"
document_id => "%{id}" <---- add this line
workers => 1
}
Après cela, vous pourrez interroger l'épisode avec l'identifiant 10
GET http://localhost:9200/simpsons/episode/10
Je suis l'auteur de moshe/elasticsearch_loader
J'ai écrit ESL pour ce problème précis.
Vous pouvez le télécharger avec pip:
pip install elasticsearch-loader
Et vous pourrez ensuite charger des fichiers csv dans elasticsearch en publiant:
elasticsearch_loader --index incidents --type incident csv file1.csv
De plus, vous pouvez utiliser un fichier d'identifiant personnalisé en ajoutant --id-field=document_id
à la ligne de commande.