Ich verwende die Elasticsearch Bulk API zum Erstellen oder Aktualisieren von Dokumenten.Elasticsearch Bulk API - Index vs Erstellen/Aktualisieren
Ich weiß zwar, ob sie erstellt oder aktualisiert werden, aber ich kann meinen Code vereinfachen, indem ich sie alle index
mache, oder "upserts" im SQL-Sinne.
Gibt es einen Nachteil bei der Verwendung von index
(und lassen ES es herausfinden) über die expliziten create
und update
?
Angenommen, Sie könnten ein bestimmtes Dokument sehr oft ersetzen (z. B. mehrfaches Indexieren des gleichen Dokuments). Da ES nichts wirklich "löscht", fügen Sie nicht mehr und mehr Dokumente hinzu und inkrementieren ihre Versionsnummer, was es später dem Müllsammler erlaubt, ältere Versionen aufzuräumen? In diesem Fall wird Index nicht verwendet, um den Index kurzfristig zu erweitern, was sich auf die Leistung auswirken könnte. Und wird sich die zukünftige starke Nutzung der Garbage Collection nicht auch auf die Performance auswirken? Das ist eine echte Frage, die ich mich frage, keine rhetorische Frage. Danke – cwarny
Aber wenn Sie ein Dokument aktualisieren, ist es nicht holen, ändern und dann indizieren es trotzdem? Bei der Aktualisierung eines ganzen Dokuments haben wir gesagt, dass ein Dokument aktualisiert werden muss, indem es abgerufen, geändert und anschließend das gesamte Dokument neu indiziert wird. Das ist wahr. Mit der update-API können wir jedoch Teilupdates durchführen, beispielsweise einen Zähler in einer einzigen Anfrage inkrementieren. Wir haben auch gesagt, dass Dokumente unveränderlich sind: Sie können nicht geändert werden, nur ersetzt. Die Update-API muss denselben Regeln entsprechen. –