Wir rufen Informationen aus Elasticsearch 2.1 ab und ermöglichen dem Benutzer, durch die Ergebnisse zu blättern. Wenn fordert der Benutzer eine hohe Seitenzahl wir die folgende Fehlermeldung erhalten:Elasticsearch 2.1: Das Ergebnisfenster ist zu groß (index.max_result_window)
Fenster Ergebnis zu groß ist, von + Größe als weniger sein muss, oder gleich zu: [10000] aber war [10020]. Sehen Sie die Scroll-API für eine effizientere Methode , um große Datenmengen anzufordern. Diese Grenze kann die durch Änderung eingestellt werden [index.max_result_window] Indexebene Parameter
Die elastische Doku sagt, dass dies wegen der hohen Speicherverbrauch und die Scroll-api zu verwenden:
Werte höher Dann können Sie pro signifikante Teile des Heap-Speichers konsumieren und die Suche durchführen. Es ist am sichersten dieses Wert zu verlassen, da es sich um eine Verwendung der Scroll-api für jede tief https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits
Das Ding Scrollen ist, dass ich nicht wollen, große Datensätze abzurufen. Ich möchte nur eine Scheibe aus dem Datensatz abrufen, die in der Ergebnismenge sehr hoch ist. Auch das Scrollen Doku sagt:
Scrolling nicht für Echtzeit-Benutzer gedacht fordert https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
Dies lässt mich mit einigen Fragen:
1) Würde der Speicherverbrauch wirklich niedriger sein (any Wenn ja, warum) Wenn ich die scrollende API verwende, um zum Ergebnis 10020 zu scrollen (und alles unter 10000 zu ignorieren), anstatt eine "normale" Suchanfrage für das Ergebnis 10000-10020 auszuführen?
2) Es scheint nicht, dass die Scroll-API eine Option für mich ist, aber dass ich "index.max_result_window" erhöhen muss. Hat jemand damit Erfahrung?
3) Gibt es noch andere Optionen, um mein Problem zu lösen?
Also, hier sollten wir tiefe Paginierung aufgeben, richtig? Grundsätzlich ist es nicht wichtig, 4000 Seiten für einen einzelnen Betrachter zu pagen. Sagen wir, Google-Suche, scrollen wir kaum zu Seite 8 oder 9, um Ergebnisse zu überprüfen. Normalerweise kümmern wir uns nur um die Top 3-5 Seiten, die Google uns gibt. – dotslash
Können wir die Scroll-API verwenden, wenn wir eine starke Paginierung benötigen? –
Aber wenn wir die Sortierfunktion aktivieren, sagen wir auf einer E-Commerce-Site. wenn Benutzer Artikel mit dem höchsten Preis sehen möchten. Das Ergebnis wird anders sein, wenn wir nach dem höchsten Preis sortieren, wenn wir nach der niedrigsten Seite sortieren, aber zur letzten Seite gehen, oder? da wir die Anzahl der Ergebnisse beschränken, kann zugegriffen werden. irgendwelche Arbeit dafür? –