Elasticsearch有两种分页方式,一种是通过from和size条件来实现,另一种是利用scroll来实现
# -*- coding: utf-8 -*-
# @Time : 2019/10/21 8:59
# @Author :
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts="ip:9200", timeout=20, max_retries=10, retry_on_timeout=True)
# Elasticsearch 需要保持搜索的上下文环境多久 游标查询过期时间为10分钟(10m)
page = es.search(
index="source_keyword_message", doc_type="source_keyword_message",
scroll='10m',
size=100,
body={
"query": {"match_all": {}},
}
)
# 游标用于输出es查询出的所有结果
sid = page['_scroll_id']
# es查询出的结果总量
scroll_size = page['hits']['total']
# es查询出的结果第一页
datas = page.get('hits').get('hits')
while (scroll_size > 0):
page = es.scroll(scroll_id=sid, scroll='5m')
sid = page['_scroll_id']
scroll_size = len(page['hits']['hits'])
datas = page.get('hits').get('hits')