Elasticsearch-PY散装助手辅助辅助夹与文件等效



我希望使用Elasticsearch Python客户端复制以下命令(并且不使用subprocess):

curl -s -XPOST "localhost:9200/index_name/_bulk" --data-binary @file

我试图在没有任何运气的情况下使用散装助手:

es = Elasticsearch()
with open("file") as fp:
    bulk(
        client=es,
        index="index_name",
        actions=fp
    )

这导致type is missing错误。

使用curl时处理的文件很好,看起来有点像这样:

{"index":{"_type":"someType","_id":"123"}}
{"field1":"data","field2":"data",...}
{"index":{"_type":"someType","_id":"456"}}
{"field1":"data","field2":"data",...}
...

请注意,我宁愿不更改文件的内容,因为我的格式大约为21000。

actions参数必须采用迭代(而不是文件句柄),该参数将在文件的行上迭代,因此您需要这样做:

es = Elasticsearch()
def readbulk():
    for line in open("file"):
        yield line
bulk(
    client=es,
    index="index_name",
    actions=readbulk
)

相关内容

  • 没有找到相关文章

最新更新