【问题标题】:How to use Elasticsearch bulk index with single JSON file in Python如何在 Python 中将 Elasticsearch 批量索引与单个 JSON 文件一起使用
【发布时间】: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


【解决方案1】:

好吧,所以helpers.bulk() 模块将字典列表和我的 elasticsearch 客户端作为参数,而不是每个条目 JSON 文件有 2 行,我只需要添加 "_index" "type" 和 @ 987654324@ 到每个 JSON dict 并且有效!

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 2017-10-14
    • 2018-08-31
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多