Медленно возвращаются результаты из Elasticsearch

3 ноды, по 16 gb памяти на каждом

Какой размер хипа у нод и какой средний размер документов?

Вы не могли бы запустить hot_threads во время выполнения скрола и прислать сюда результат?

С кодом проблем не вижу. Если у вас несколько шард в этом индексе, я бы попробовал тянуть параллельно через sliced scroll, поставив slice в количество шард.