在Python中将CSV索引到ElasticSearch

blu*_*ers 5 python csv elasticsearch python-3.5 elasticsearch-dsl

希望将CSV文件索引到ElasticSearch,而不使用Logstash.我正在使用elasticsearch-dsl高级库.

给定带标题的CSV,例如:

name,address,url
adam,hills 32,http://rockit.com
jane,valleys 23,http://popit.com
Run Code Online (Sandbox Code Playgroud)

按字段索引所有数据的最佳方法是什么?最终我想让每一行看起来像这样

{
"name": "adam",
"address": "hills 32",
"url":  "http://rockit.com"
}
Run Code Online (Sandbox Code Playgroud)

Hon*_*rál 29

使用较低级别的elasticsearch-py库,此类任务更容易:

from elasticsearch import helpers, Elasticsearch
import csv

es = Elasticsearch()

with open('/tmp/x.csv') as f:
    reader = csv.DictReader(f)
    helpers.bulk(es, reader, index='my-index', doc_type='my-type')
Run Code Online (Sandbox Code Playgroud)

  • @seamaner只是意味着elasticsearch无法足够快地处理您发送的数据。您可以通过在实例化时将`timeout = N`传递给`Elasticsearch`来增加超时(默认为10秒)(其中N> 10) (2认同)