Nehmen wir an, ich habe einen tag
-Typ in einem ElasticSearch-Index mit folgender Zuordnung:
Jeder Eintrag ist ein Tag und ein Array von Aliasen für dieses Tag. Hier ist ein Beispiel:
%Vor%Von Zeit zu Zeit möchte ich neue Tag-Wörter mit ihren Aliasen hinzufügen und zu vorhandenen Tag-Wörtern neue Aliase hinzufügen.
Das Hinzufügen neuer Schlagworte mit ihren Aliasen ist einfach, es ist nur ein neues Dokument. Wie kann ich jedoch bestehende Aliase zu bestehenden Tag-Wörtern auf vernünftige Weise hinzufügen?
Ich weiß, dass ich einfach nach dem Tag-Wort suchen, sein Dokument abrufen, suchen kann, ob der Alias bereits im Alias-Array existiert, wenn nicht, und dann speichern. Jedoch - das klingt nicht wie eine gute Lösung.
Gibt es eine Möglichkeit, ein Bulk-Update durchzuführen?
Der zu Grunde liegende Elasticsearch-Speicher, Lucene, hat keine Aktualisierungsoperation. Daher werden alle Aktualisierungen durch Auffinden des Datensatzes, Löschen der alten Version und Hinzufügen der neuen Version durchgeführt. In elasticsearch können Sie mit der Update-API . Es würde jedoch immer noch erforderlich sein, den Rekord zu finden. Was Sie wahrscheinlich wollen, ist Update per Abfrage , aber leider ist es noch nicht implementiert.
Elastic Search hat eine Update-API . Mit dieser API können Sie Folgendes tun:
%Vor% Elasticsearch 2.3.0 hat die Update-by-Query-API
Als Beispiel können Sie hier alle Dokumente aktualisieren, um ein bestimmtes Feld zu löschen, falls es existiert:
%Vor% Im obigen Beispiel wird Inline-Skripting verwendet. Stellen Sie sicher, dass Sie es in elasticsearch.yml
mit script.inline: on
aktivieren.
Auch wenn Sie denselben Wert mit derselben ID hinzufügen, werden ältere Daten automatisch aktualisiert.
Die Bulk-APIs von Elasticsearch können auch für Aktualisierungsanforderungen verwendet werden, zumindest für den Java-Client.
%Vor%Beachten Sie, dass dynamisches Skripting in neueren Versionen von elasticsearch deaktiviert ist. Aktivieren Sie das oder verwenden Sie vorkompilierte Skripts zur Verwendung dieser Funktion.
Tags und Links elasticsearch elasticsearch-bulk-api