【发布时间】:2015-08-16 08:21:09
【问题描述】:
我有一个 JSON 文件,格式如下:
{"index":{"_type": "summary", "_id": "0001-1200-2015-12-31-0007", "_index": "transaction"}}
{"data_load_user_id": "nathan", "tender_time": 5, "ring_time": 8, "operator_id": "0111"}
大约 12,000 行。据我所知,这是在 elasticsearch 中为批量 API 格式化 JSON 文件的正确方法。我仍然对如何使用 es.bulk() 将此单个文件作为输入感到困惑。我已经为每一行指定了索引和 ID。
【问题讨论】:
-
如果您使用的是官方模块,请查看
elasticsearch.helpers.bulk()。我很确定你可以传递一个包含你的行的列表,它会做正确的事情。编辑:这是文档:elasticsearch-py.readthedocs.org/en/master/… -
@Cfreak 它必须是 JSON 对象列表还是字符串列表?我尝试打开文件并从中创建一个迭代器,但是当我传入迭代器时,它给出了错误
AttributeError: 'str' object has no attribute 'copy' -
@Cfreak 文档说“它消耗一个动作迭代器并将它们分块发送到弹性搜索”;列表会算作迭代器吗?
-
是的。它必须是
dict(它会被转换回 JSON)。 -
是的。列表或迭代器将起作用。我正在挖掘我的一些代码,看看我是否曾经直接从 JSON 完成它,而不是解码和编码回来。
标签: python json elasticsearch-plugin elasticsearch