Ist es möglich, die Anzahl der Shards in der ElasticSearch-Suchmaschine zu reduzieren, nachdem der Index erstellt wurde?
Ich habe es versucht:
%Vor%Aber es gibt einen Fehler:
%Vor%Ok. Wie @Mysterion sagte, ist es nicht möglich, die Anzahl der Shards mit Zero-Downtime direkt mit einem Index-Update zu ändern. Aber es gibt noch einen anderen Weg.
Sie müssen Ihren alten Index in einen neuen Index neu indizieren, nachdem Sie ihn mit der gewünschten Anzahl von Shards erstellt haben. (Wie ich sagte keine Null-Ausfallzeit)
Dafür können Sie die Scroll-Such-API verwenden:
Während eine Suchanforderung eine einzelne "Seite" von Ergebnissen zurückgibt, kann die Scroll-API verwendet werden, um eine große Anzahl von Ergebnissen (oder sogar alle Ergebnisse) von einer einzelnen Suchanfrage abzurufen, ähnlich wie Sie a Cursor auf einer traditionellen Datenbank.
Scrolling ist nicht für Echtzeit-Benutzeranfragen gedacht, sondern eher für die Verarbeitung großer Datenmengen, z. um den Inhalt eines Indexes in einen neuen Index mit einer anderen Konfiguration neu zu indizieren.
Client-Unterstützung für Scrollen und Neuindizieren: Einige der offiziell unterstützten Clients stellen Helfer zur Verfügung, die Scroll-Suchen und das Neuindizieren von Dokumenten von einem Index zu einem anderen unterstützen:
Perl Siehe Suche :: Elasticsearch :: Bulk und Suche :: Elasticsearch :: Scroll
Python Siehe elasticsearch.helpers. *
Für weitere Informationen über die Scroll-Such-API empfehle ich den Offiziellen Dokumentation
Und vielleicht möchten Sie sich auch diese Antwort hier ansehen, vielleicht kann sie Ihnen auch ein paar Ideen geben Falls Sie Java verwenden.
Dies trifft nicht mehr zu. Mit 5.x können Sie die Anzahl der Indizes auf einen ganzen Bruch zusammenfassen. Zum Beispiel von 12 bis zu 1, 2, 3 oder 6 (siehe Dokumente ). Aber Sie müssen es in den schreibgeschützten Modus versetzen, und natürlich erfordert der Schrumpfungsprozess viel IO.
Tags und Links elasticsearch