想必已对scroll的用法已有基本了解
滚动获取数据的关键在于,第一次使用scroll_id获取第一批数据的时候,同时下一个scroll_id也放在了第一次获取数据的返回体中了。
python代码(requests版):
# -*- coding: utf-8 -*-
import requests
host = "xx.xx.xx.xx"
r = requests.get(
url="http://{}:9200/index_name/_search?scroll=1m&size=10000".format(host),
json={},
auth=("user", "password"),
headers={'Content-Type': 'application/json'}
).json()
scroll_id = r['_scroll_id']
while True:
data = r['hits']['hits']
# 数据遍历完成,跳出
if data == []:
break
# 数据处理,组合也好,保存也好
for i in data:
source = i['_source']
r = requests.get(
url="http://{}:9200/_search/scroll".format(host),
json={"scroll": "1m", "scroll_id": scroll_id},
auth=("user", "password"),
headers={'Content-Type': 'application/json'}
).json()
# 更新scroll_id
scroll_id = r['_scroll_id']