我正在访问一个弹性数据库,我想使用scroll()
逐个返回结果,这需要我使用scroll_id
方法来获取search()
。
结果大小可以在0到40000之间,这就是为什么我不能整个使用search()
的原因。
当点击次数很大时,我没有注意到问题,但是当只有一次点击时,滚动不会返回任何内容。
query = {"query":{"match":{"message": "Techtotic"}}, "sort": [{"@timestamp":"asc"}]}
scrollid = es.search(index="ts-shanks*", size=2, scroll="50m", body=query)
hits = scrollid["hits"]["total"]
scrollid = scrollid["_scroll_id"]
for i in range(hits):
entry = es.scroll(scroll_id=scrollid, scroll="1m", filter_path=req_data)
try:
print(entry["hits"]["hits"][0]["_source"]["message"])
except Exception:
print(json.dumps(entry, indent=4))
输出在与'''search()'''对应的打印中显示匹配的命中,但在与scroll()
对应的匹配中不显示。
此外,无论有多少点击,我们得到的滚动的最后输出总是触发except块,因为它是空的。
我听说search_type="scan"
会解决它,但它似乎表明它已被弃用。