gpt4 book ai didi

python - 使用Python的Elasticsearch JSON批量索引

转载 作者:行者123 更新时间:2023-12-03 00:38:59 27 4
gpt4 key购买 nike

我在单个JSON中拥有大量数据,我想将其导入Elasticsearch以在Kibana中进行一些可视化处理。我的JSON当前看起来像这样:

[{"field1": "x", "field2": "y"},
{"field1": "w", "field2": "z"}]
...etc

经过研究后,我发现将数据提供给Elasticsearch的最佳方法是使用Bulk API,但首先我需要重新格式化数据,使其看起来像这样:
{"index":{"_index": "myindex", "type": "entity_type", "_id": 1}}
{"field1": "x", "field2": "y"}
{"index":{"_index": "myindex", "type": "entity_type", "_id": 2}}
{"field1": "w", "field2": "z"}
...etc

然后我必须使用curl发布该文件。

所有这些都是更大的Python项目的一部分,因此我想知道重新格式化数据的最佳方法,以及如何使用Python将其导入Elasticsearch。我曾考虑过使用正则表达式进行重新格式化(re.sub和replace),而且我也查看过Elasticsearch批量帮助程序来发布数据,但我找不到解决方案。

感谢您的任何帮助。

最佳答案

!

根据https://elasticsearch-py.readthedocs.io/en/master/helpers.html#example的说法,python lib有一些bulk操作的助手。

例如,对于您的情况,可以使用以下代码:

def gendata():
docs = [{"field1": "x", "field2": "y"},{"field1": "w", "field2": "z"}]
for doc in docs:
yield {
"_op_type":"index",
"_index": "docs",
"_type": "_doc",
"doc": doc
}

bulk(es, gendata())

关于python - 使用Python的Elasticsearch JSON批量索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com