2016-09-08 1 views
0

Wenn ich die Theorie von From/Size in elasticsearch lese.Der Bereich bei der Ausgrabung von/Größe in elasticsearch

https://www.elastic.co/guide/en/elasticsearch/reference/1.7/search-request-from-size.html

Das Problem ist, dass, wie der Bereich der Suche nach detemine. Zum Beispiel, wenn ich 1.000 Datensätze erzeugen dann ich abfragen es als Schnipsel unten:

{ 
    "from" : 100, "size" : 10, 
    "query" : { 
     "term" : { "user" : "kimchy" } 
    } 
} 

Ist, dass es auf dem Bereich der Aufzeichnung 100-1,000 wird gesucht und dann 10 Ergebnisse? Oder es wird automatisch eine geeignete Reichweite generieren und 10 Ergebnisse zurückgeben? Kann mir jemand helfen, dieses Problem zu umgehen? Mit bestem Gruß.

Antwort

1

Also spaltet elasticsearch unseren Index in kleinere Teile auf, die "Shards" genannt werden. Wenn Sie also einen Index mit 5 Shards und 1000 Dokumenten haben, werden jedem Shard 200 Dokumente zugewiesen. Wenn Sie nun eine Suchanfrage ausführen, durchsucht elasticsearch alle Shards und erstellt eine Ergebnisliste, die in absteigender Reihenfolge der Punkte in jedem Shard sortiert ist.

Jetzt, wenn wir die ersten 10 Ergebnisse (von: 0, Größe: 10) wollen, wird elasticsearch die Top 10 Ergebnisse von jedem Shard erhalten, dh insgesamt 50 Ergebnisse (vorausgesetzt, dass jeder Shard mehr als 10 Treffer hat) sortiere sie erneut und gib die Top 10 zurück und verwerfe den Rest der 40 Ergebnisse.

Jetzt für den Fall, dass Sie die Ergebnisse von 100 bis 110 (von: 100, Größe: 10) wollen, elasticsearch wird die Top-110-Ergebnis von jedem Shard dh. insgesamt 550 Ergebnisse. Diese 550 Ergebnisse werden nun erneut sortiert, um die besten 110 Ergebnisse zu erhalten, und der Rest der 440 Ergebnisse wird verworfen.

Nun werden von diesen 110 Ergebnissen die Nummern 1-99 verworfen und die Ergebnisnummer 100-110 wird als Ergebnis der Suchanfrage zurückgegeben.

+0

In Ihrer Antwort "Nun, wenn Sie die Ergebnisse von 100 bis 110 (von: 100, Größe: 10) wollen, wird elasticsearch die besten 110 Ergebnisse von jedem Shard anfordern, dh insgesamt 550 Ergebnisse haben" Problem. Ich denke, es elasticsearch wird die Top 10 Ergebnisse wegen der Größe anfordern: 10 Sie war Config. Und die insgesamt nur 50 Ergebnisse von allen Scherben gesammelt – VanThaoNguyen

+0

Nun, das ist nicht korrekt. Werfen Sie einen Blick darauf: https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html – adityasinghraghav

Verwandte Themen