Anwenden von "Tags" auf Millionen von Dokumenten mithilfe von Massen- / Aktualisierungsmethoden

Wir haben in unserer ElasticSearch-Instanz ungefähr 55.000.000 Dokumente. Wir haben eine CSV-Datei mit user_ids, die größte CSV hat 9 Millionen Einträge. Unsere Dokumente haben user_id als Schlüssel, das ist also praktisch.

Ich poste die Frage, weil ich sie diskutieren möchte und die beste Option habe, um dies zu erreichen, da es verschiedene Möglichkeiten gibt, dieses Problem zu lösen. Wir müssen dem Dokument das neue "Etikett" hinzufügen, wenn es im Benutzerdokument noch nicht vorhanden ist, z. B. indem wir den Benutzer mit "stackoverflow" oder "github" markieren.

Es gibt den Klassikerpartialupdate Endpunkt. Dies hört sich sehr langsam an, da wir über 9 Millionen Benutzer-IDs durchlaufen und den API-Aufruf für jede dieser IDs ausgeben müssen.dort ist derbulk Anfrag, das eine bessere Leistung bietet, jedoch nur 1000-5000 Dokumente enthält, die in einem Aufruf erwähnt werden können. Und zu wissen, wann der Stapel zu groß ist, ist ein bisschen zu wissen, wie wir unterwegs lernen müssen. Dann gibt es dasoffizielle offene Ausgabe zum/update_by_query Endpunkt mit viel Verkehr, aber ohne Bestätigung, dass er in der Standardversion implementiert wurde.In dieser offenen Ausgabe wird ein @ erwähnupdate_by_query plugin, das eine bessere Handhabung bieten sollte, aber es gibt alte und offene Probleme, bei denen sich Benutzer über Leistungsprobleme und Speicherprobleme beschweren. Ich bin nicht sicher, ob es auf EL machbar ist, aber ich dachte, ich würde alle CSV-Einträge in einen separaten Index laden und irgendwie die beiden Indizes verbinden und ein Skript anwenden, das das Tag hinzufügt, wenn es noch nicht existiert.

So bleibt die Frage, wie dies am besten zu bewerkstelligen ist, und wenn einige von Ihnen dies in der Vergangenheit getan haben, stellen Sie sicher, dass Sie Ihre Zahlen / Leistung teilen und wie Sie diesmal anders vorgehen würden.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage