2014-05-24 3 views

Antwort

7

Ich denke, ein guter Ort, um mit Scan-Abfragen ist die Scroll-api verwenden:

http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/scan-scroll.html

Im Grunde ist es ähnlich wie bei einem Cursor mit einer Datenbank - Öffnen Sie die Abfrage mit Zeitlimit und es gibt eine Scroll-ID Sie verwenden dann diese Bildlauf-ID, um den ersten Stapel von Ergebnissen abzurufen, und die Dokumente werden zusammen mit einer neuen Bildlauf-ID zurückgegeben. Beispiele unten:

curl -XGET 'localhost:9200/_search?search_type=scan&scroll=10m&size=1000' -d ' 
{ 
    "query" : { 
     "match_all" : {} 
    } 
} 
' 

Dies wird eine _scroll_id zurück, die Sie dann Dokumente verwenden abzurufen:

curl -XGET 'localhost:9200/_search/scroll?scroll=10m' -d '<_SCROLL_ID_HERE>' 

Beachten Sie, dass diese 1000 Dokumente pro primärem SHARD zurück - wenn Sie also vier primäre Shards haben wird es Gebe 4000 Dokumente zurück. Jeder Aufruf gibt zusätzlich zu den Dokumenten eine neue _scroll_id zurück, die Sie dann für den nächsten Aufruf verwenden. Der "scroll = 10m" legt ein Zeitlimit von 10m fest, um den Bildlauf zwischen den Anrufen offen zu halten.

Verwandte Themen