web-dev-qa-db-fra.com

importer csv dans elasticsearch

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.

18
adelura

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
15
Val

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.

1
MosheZada