gpt4 book ai didi

api - 使用 OpenSearch Python bulk api 将数据插入多个索引

转载 作者:行者123 更新时间:2023-12-05 05:39:38 24 4
gpt4 key购买 nike

本文档展示了如何使用 curl 中的 POST 请求插入具有多个索引的批量数据:https://opensearch.org/docs/latest/opensearch/index-data/

如果我有这种格式的数据,

[
{ "index": { "_index": "index-2022-06-08", "_id": "<id>" } }
{ "A JSON": "document" }
{ "index": { "_index": "index-2022-06-09", "_id": "<id>" } }
{ "A JSON": "document" }
{ "index": { "_index": "index-2022-06-10", "_id": "<id>" } }
{ "A JSON": "document" }
]

批量请求应从 "_index": "index-2022-06-08"

获取索引名称

我试图使用 OpenSearch-py 库来做同样的事情,但我找不到任何示例片段可以做到这一点。我正在使用这种格式从 AWS Lambda 发送请求。

client = OpenSearch(
hosts = [{'host': host, 'port': 443}],
http_auth = awsauth,
use_ssl = True,
verify_certs = True,
connection_class = RequestsHttpConnection
)

resp = helpers.bulk(client, logs, index= index_name, max_retries = 3)

在这里,我不得不提到 index_name 作为批量请求中的参数,因此它不会从数据本身获取 index_name。如果我没有在参数中提及 index_name,我会收到错误 4xx index_name missing。

我也在研究批量 api 源代码:https://github.com/opensearch-project/opensearch-py/blob/main/opensearchpy/helpers/actions.py#L373

index_name 好像不是必须的参数。

任何人都可以帮我解决我所缺少的吗?

最佳答案

我遇到了同样的问题并在 elasticsearch.py bulk-helpers documentation 中找到了解决方案.当搜索端点返回的 _source-structure 中提供文档时,它就可以工作。

批量方法的调用:

resp = helpers.bulk(
self.opensearch,
actions,
max_retries=3,
)

actions 是这样的字典列表:

[{
'_op_type': 'update',
'_index': 'index-name',
'_id': 42,
'_source': {
"title": "Hello World!",
"body": "..."
}
}]

_op_type 可以作为附加字段来定义操作(index, update, delete, ...) 应为文档调用。

希望这对遇到同样问题的人有所帮助!

关于api - 使用 OpenSearch Python bulk api 将数据插入多个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72632710/

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