Вы должны попытаться использовать Scroll API, который должен помочь вам получить большое количество результатов (или даже всех результатов, как в вашем случае).
Эта функциональность аналогична курсорам из традиционных баз данных.
Все, что вам нужно сделать, это добавить параметр scroll к вашему запросу в клиенте Python. Минимальный жизнеспособный пример может выглядеть так:
page = es.search(
index = 'yourIndex',
doc_type = 'yourType',
scroll = '2m',
search_type = 'query_then_fetch',
size = 1000,
body = {
//Your query's body
})
sid = page['_scroll_id']
scroll_size = page['hits']['total']
//Start scrolling
while (scroll_size > 0):
print "Scrolling..."
page = es.scroll(scroll_id = sid, scroll = '2m')
//Update the scroll ID
sid = page['_scroll_id']
//Get the number of results that we returned in the last scroll
scroll_size = len(page['hits']['hits'])
print "scroll size: " + str(scroll_size)
//Do something with the obtained page
Пример взят здесь - https://gist.github.com/drorata/146ce50807d16fd4a6aa
Ссылка на документы клиента Python - https://elasticsearch -py.readthedocs.io / en / master / api.html