Wir rufen Informationen aus Elasticsearch 2.1 ab und ermöglichen dem Benutzer, durch die Ergebnisse zu blättern. Wenn der Benutzer eine hohe Seitenzahl anfordert, wird die folgende Fehlermeldung angezeigt:
Das Ergebnisfenster ist zu groß. Die Größe + muss kleiner oder gleich: [10000] sein, war aber [10020]. In der Bildlauf-API finden Sie eine effizientere Möglichkeit, große Datenmengen anzufordern. Diese Grenze kann durch Ändern des Indexebenenparameters [index.max_result_window] festgelegt werden
Das elastische Dokument besagt, dass dies auf einen hohen Speicherverbrauch und die Verwendung der Bildlauf-API zurückzuführen ist:
Werte, die höher sind, als pro Suche und pro Shard, der die Suche ausführt, erhebliche Teile des Heapspeichers verbrauchen können. Es ist am sichersten, diesen Wert zu belassen, da die Scroll-API für tiefes Scrollen verwendet wird. Https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits
Die Sache ist, dass ich keine großen Datenmengen abrufen möchte. Ich möchte nur ein Slice aus dem Datensatz abrufen, das sehr hoch in der Ergebnismenge ist. Auch das Scrolling-Dokument sagt:
Das Scrollen ist nicht für Benutzeranfragen in Echtzeit vorgesehen. Https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
Dies lässt mich einige Fragen offen:
1) Wäre der Speicherverbrauch wirklich geringer (wenn ja, warum), wenn ich die Bildlauf-API verwende, um zum Ergebnis 10020 zu scrollen (und alles unter 10000 zu ignorieren), anstatt eine "normale" Suchanforderung für das Ergebnis 10000-10020 durchzuführen?
2) Es scheint nicht, dass die Bildlauf-API eine Option für mich ist, sondern dass ich "index.max_result_window" erhöhen muss. Hat jemand irgendwelche Erfahrungen damit?
3) Gibt es andere Möglichkeiten, um mein Problem zu lösen?
'Result window is too large, from + size must be less than or equal to: [10000] but was [47190]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.')
Es sagte, es hat 4719 Seiten (jede Seite 10 Ergebnisse). und ich denke, Ihr Vorschlag funktioniert.