首页 > 解决方案 > 无法理解 Elasticsearch Scroll 文档

问题描述

所以我使用 Python 3.8 和 Requests lib 来帮助我对 ES 7.4.2 进行 RESTful API 调用。查看Scroll的 ES 文档,它指出:

初始搜索请求应在查询字符串中指定滚动参数,该参数告诉 Elasticsearch 应将“搜索上下文”保持多长时间

所以这是我打的第一个电话。

requests.post("http://127.0.0.1:9200/paulk/_search?scroll=1m, headers={'Content-type': 'application/json'}, data=json.dumps({"size": 100, "query": {"match_all": {}}}))

这将返回 200 并且一切都在预期中,但是。根据documentationf或第二次也是最后一次调用,它指出:

上述请求的结果包括一个 _scroll_id,应将其传递给滚动 API 以检索下一批结果。

因此,我按照以下文档中的说明执行接下来的 3 个步骤:

requests.post(url="http://127.0.0.1:9200/_search/scroll", headers=headers, data=json.dumps({"scroll": "1m", "scroll_id": scroll_id}))

但是我得到的结果是 400,我做错了什么?我得到的返回字符串是:

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Failed to parse request body"}],"type":"illegal_argument_exception","reason":"Failed to parse request body","caused_by":{"type":"json_parse_exception","reason":"Unrecognized token 'scroll': was expecting ('true', 'false' or 'null')\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@a7e638b; line: 1, column: 8]"}},"status":400}

我尝试了几种不同的组合,但我得到的只是 400。

标签: pythonelasticsearch

解决方案


推荐阅读