首页 > 解决方案 > Elasticsearch:如何在没有 HTTP 404 错误的情况下搜索滚动?

问题描述

我正在尝试从 Elasticsearch 获取包含 600k+ 文档的搜索查询的所有文档。您不能使用调整最大返回文档数参数的search size参数或索引settings,因为这两者都期望文档数量较少。

从 python elasticsearch 模块我做了一个:

result = client.search(... scroll='1m')
scroll_id = result['_scroll_id']
while True:
    # ...
    client.scroll(... scroll_id=scroll_id)
    # ...

控制台报告成功滚动 200 毫秒或大约 7 次滚动。然后我得到 HTTP 404。

如何在没有 HTTP 404 错误的情况下搜索滚动?

ps我在这里是7.3版。

标签: elasticsearch

解决方案


我在这里找到了解决方案:https ://github.com/ropensci/elastic/issues/178

您必须修改client.scroll调用以包含scroll超时参数scroll='1m'

client.search(... scroll='1m')
while True:
    # ...
    client.scroll(... scroll_id=scroll_id, scroll='1m')

然后我的滚动工作。

ps 我这里只使用python,因为它使编写更容易(解决方案最初来自一个R编程语言的github)。此解决方案适用于任何 Elasticsearch REST API 使用 IMO。


推荐阅读