Elasticsearch:如何搜索滚动没有HTTP 404错误?



我试图从Elasticsearch中获得所有文档,用于搜索具有600k+文档的查询。您不能使用searchsize参数或索引的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错误?

注。我现在使用的是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')

然后我的滚动工作。

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

最新更新