elasticsearch - 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版。
解决方案
我在这里找到了解决方案: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。
推荐阅读
- r - 管道后报价
- docker - 如何从 docker compose 文件中的容器获取 journalctl 日志
- ibm-mq - 面向开发人员的 MQ V9.1 - 限制
- c - 如果 stdio 是 C 的跨平台 C/标准库抽象
- java - 方法调用:Collections.emptyList() 在不同情况下表现出不同的行为?
- python-3.x - Return 语句未在 Flask 中输出结果
- java - 具有返回类型的事件处理程序
- jquery - jquery 固定标头无法正常工作
- shell - 使用 Shell 脚本为每个用户角色创建新行条目
- invoice - Konik ZUGFeRD PaymentDiscountTerms