Elasticsearch-py escanea y desplázate para devolver todos los documentos

Estoy usando elasticsearch-py para conectarme a mi base de datos ES que contiene más de 3 millones de documentos. Quiero devolver todos los documentos para poder resumir datos y escribirlos en un csv. Pude lograr esto fácilmente para 10 documentos (el retorno predeterminado) usando el siguiente código.

es=Elasticsearch("glycerin")
query={"query" : {"match_all" : {}}}
response= es.search(index="_all", doc_type="patent", body=query)

for hit in response["hits"]["hits"]:
  print hit

Desafortunadamente, cuando intenté implementar el escaneo y el desplazamiento para poder obtener todos los documentos, tuve problemas. Lo intenté de dos maneras diferentes sin éxito.

Método 1:

scanResp= es.search(index="_all", doc_type="patent", body=query, search_type="scan", scroll="10m")  
scrollId= scanResp['_scroll_id']

response= es.scroll(scroll_id=scrollId, scroll= "10m")
print response

 Despuésscroll/ le da el id de desplazamiento y luego termina con?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))

Método 2:

query={"query" : {"match_all" : {}}}
scanResp= helpers.scan(client= es, query=query, scroll= "10m", index="", doc_type="patent", timeout="10m")

for resp in scanResp:
    print "Hiya"

Si imprimo scanResp antes del ciclo for me sale<generator object scan at 0x108723dc0>. Debido a esto, estoy relativamente seguro de que estoy desordenando mi pergamino de alguna manera, pero no estoy seguro de dónde o cómo solucionarlo.

Resultados: De nuevo, despuésscroll/ le da el id de desplazamiento y luego termina con?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))

Intenté aumentar los reintentos de Max para la clase de transporte, pero eso no marcó la diferencia. Apreciaría mucho cualquier idea sobre cómo solucionar esto.

Nota: Mi ES está ubicado en un escritorio remoto en la misma red.

Respuestas a la pregunta(2)

Su respuesta a la pregunta