2016-08-02 19 views
1

Momentan verwende ich das folgende Programm, um die ID und ihre Schweregradinformationen aus der elastischen Suche zu extrahieren.Alle Zeilen mit elasticsearch_dsl abrufen

from elasticsearch import Elasticsearch 
from elasticsearch_dsl import Search, Q 

client = Elasticsearch(
    [ 
     #'http://user:[email protected]:9200/', 
     'http://10.x.x.11:9200/', 
    ], 
    verify_certs=True 
) 

s = Search(using=client, index="test") 

response = s.execute() 

for hit in response: 
    print hit.message_id, hit.severity, "\n\n" 

ich glaube, dass die Abfrage standardmäßig 10 Zeilen zurückgibt. Ich habe mehr als 10000 Zeilen in der elastischen Suche. Ich muss alle Informationen holen.

Kann mir jemand erklären, wie man die gleiche Abfrage ausführt, um alle Datensätze abzurufen?

Antwort

2

Sie können die scan() helper function verwenden, um alle Dokumente aus Ihrem test Index abzurufen:

from elasticsearch import Elasticsearch, helpers 

client = Elasticsearch(
    [ 
     #'http://user:[email protected]:9200/', 
     'http://10.x.x.11:9200/', 
    ], 
    verify_certs=True 
) 

docs = list(helpers.scan(client, index="test", query={"query": {"match_all": {}}})) 

for hit in docs: 
    print hit.message_id, hit.severity, "\n\n"