Sto usando elasticsearch-py per connettermi al mio database ES che contiene oltre 3 milioni di documenti. Voglio restituire tutti i documenti in modo da poter astrarre i dati e scriverli in un CSV. Sono riuscito a farlo facilmente per 10 documenti (il ritorno predefinito) usando il seguente codice.scansione elasticsearch-py e scorrere per restituire tutti i documenti
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
Purtroppo, quando ho tentato di implementare la scansione & di scorrimento in modo da poter ottenere tutti i documenti ho incontrato problemi. L'ho provato in due modi diversi senza successo.
Metodo 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
Dopo
scroll/
dà l'id di scorrimento e poi conclude con ?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))
Metodo 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"
se stampo fuori scanResp prima della per loop ottengo <generator object scan at 0x108723dc0>
. Per questo motivo sono relativamente certo che sto incasinando la mia scroll in qualche modo, ma non sono sicuro di dove o come risolverlo.
Risultati: Anche in questo caso, dopo
scroll/
dà l'id di scorrimento e poi conclude con ?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))
ho provato aumentando il Max tentativi per la classe di trasporto, ma che non ha fatto un difference.I sarebbe molto apprezzo molto qualsiasi idea su come risolvere questo problema.
Nota: My ES si trova su un desktop remoto sulla stessa rete.
Questo è infatti dove l'errore venisse. Risulta che hanno riparato questo un po 'indietro, tuttavia una semplice installazione di pip --update elasticsearch è stata la risposta ufficiale al problema. [fai di Elasticsearch.scroll POST l'ID scroll] (https://github.com/elasticsearch/elasticsearch-py/pull/28) – drowningincode
Quindi non capisco come lo risolvi effettivamente ... – Dror
Assicurati di utilizzare una versione aggiornata di Elasticsearch. Il mio problema era che stavo usando una versione da prima di correggere questo – drowningincode