将csv导入elasticsearch

时间:2017-04-29 22:19:44

标签: csv elasticsearch import logstash

我正在做“弹性搜索入门”教程。不幸的是,本教程没有介绍将csv数据库导入elasticsearch的第一步。

我用谷歌搜索找到解决方案,但不幸的是它不起作用。这是我想要实现的目标和我所拥有的:

我有一个包含我要导入的数据的文件(简化)

id,title
10,Homer's Night Out
12,Krusty Gets Busted

我想使用logstash导入它。在通过互联网进行研究后,我最终得到了以下配置:

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
    }
}

我在指定文档类型时遇到问题,因此一旦导入数据并导航到http://localhost:9200/simpsons/episode/10我希望看到第10集的结果。

2 个答案:

答案 0 :(得分:15)

干得好,你几乎就在那里,你只是错过了文件ID。您需要修改elasticsearch输出,如下所示:

elasticsearch {
    action => "index"
    hosts => ["127.0.0.1:9200"]
    index => "simpsons"
    document_type => "episode"
    document_id => "%{id}"             <---- add this line
    workers => 1
}

在此之后,您将能够查询ID为10的剧集

GET http://localhost:9200/simpsons/episode/10

答案 1 :(得分:1)

我是moshe/elasticsearch_loader
的作者 我为这个确切的问题写了ESL。
您可以通过pip下载它:

pip install elasticsearch-loader

然后您将可以通过发出以下命令将csv文件加载到elasticsearch中:

elasticsearch_loader --index incidents --type incident csv file1.csv

此外,您可以通过在命令行中添加--id-field=document_id来使用自定义ID文件