elasticsearch,connection,bulk,Python,Json,elasticsearch,Connection,Bulk" /> elasticsearch,connection,bulk,Python,Json,elasticsearch,Connection,Bulk" />

使用python在elasticsearch上批量上载

使用python在elasticsearch上批量上载,python,json,elasticsearch,connection,bulk,Python,Json,elasticsearch,Connection,Bulk,elasticsearch.exception.TransportError:传输错误(406,不支持u'Cone\tent头[])您的代码可能没有问题 问题是它无法连接到ES。我认为问题在于解决localhost,尝试将其设置为127.0.0.1:9200。如果是Linux机器,请尝试更改/etc/hosts文件以解析localhost。确保在最后一行后添加新行字符。@Val但这将如何解决我的连接问题?这是另一个问题,可能与ES批量调用无关。你能从你的主机ping localhost:9200

elasticsearch.exception.TransportError:传输错误(406,不支持u'Cone\tent头[])

您的代码可能没有问题


问题是它无法连接到ES。我认为问题在于解决localhost,尝试将其设置为127.0.0.1:9200。如果是Linux机器,请尝试更改/etc/hosts文件以解析localhost。

确保在最后一行后添加新行字符。@Val但这将如何解决我的连接问题?这是另一个问题,可能与ES批量调用无关。你能从你的主机ping localhost:9200吗?@Val我查过了。正在使用Request.get,它正在工作。在URL上,它也在工作,但使用Curl时,它表示localhost无法解析。我也在邮递员身上试过,结果是绿色的flag@Val这与es.bulk有关。我这样做了,我似乎得到了TransportError 400:帧太长异常您可以跟踪es日志并使用错误堆栈进行更新吗?另外,您的索引和/或类型是否可能太长?类型是doc,而我的索引是一个单词。反映在ES日志上的最后一个日志的日期是2017年7月17日
from elasticsearch import Elasticsearch as ES
import json

json_data[]
with open('00.json', 'r') as f:
    for line in f:
        json_data.append(json.loads(line))

t = '\n'.join(str(item) for item in json_data)

es = ES('127.0.0.1:9200/')
ES_INDEX = 'myindex'
ES_TYPE = 'doc'

es.bulk(ES_INDEX, ES_TYPE, t)