【发布时间】:2020-09-04 01:08:42
【问题描述】:
我正在尝试通过 Python 自动执行对 Elasticsearch 的批量请求。
因此,我正在为请求正文准备如下数据(作为单独的行保存在列表中):
数据 = [{"index":{"_id": ID}}, {"tag": {"input": [tag], "weight":count}}]
然后我将使用 requests 进行 Api 调用:
r = requests.put(endpoint, json = data, auth = auth)
这给了我错误: b'{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"批量请求必须以换行符终止 [\\n]"}],"type":"非法参数异常","原因":"批量请求必须以换行符终止 [\\n]"},"状态":400}'
我知道我需要在请求的末尾添加一个换行符,这就是我的问题: 如何在给定的数据结构上附加换行符?我试图在最后将 '\n' 附加到我的列表中,但没有成功。
谢谢你们!
【问题讨论】:
-
降低一级并尝试从命令行
curl端点。看看这是否解决了您的问题discuss.elastic.co/t/… 当它工作时,您可以尝试调整您的 python 代码。 -
感谢您的回复!我已经从 Postman 向同一个端点发出了批量请求,效果很好!
-
确保 API 调用完全相同
put与post、标头、身份验证、数据... -
完全一样。我还向完美运行的端点做了一些请求(获取和发布)
-
使用 Postman 捕获 API 请求,您会发现它们并不完全相同。如果是这样,您使用 Python 就不会出错,而没有 Python 也不会出错。
标签: python json list elasticsearch python-requests