Hier ist ein Szenario, dem ich gegenüberstehe, und ich bin im Zweifel, ob die Lösung, die ich nehme, die kanonische/intelligente Lösung ist. Nehmen Sie eine Datei an, in der jede Zeile ein gültiger JSON ist. Darüber hinaus enthält jedes Objekt ein Feld type
und id
und die Paare von sind einzigartig. Mein Ziel ist es, alle Objekte in einen Index auf einem ES-Cluster zu indizieren. Bisher habe ich zwei Ansätze:Indizierung vieler JSON-Objekte in Elasticsearch - der kanonische Weg
Mit dem bulk
API zusammen mit jq
etwas mit wie:
$ cat foo.json | jq -c '. | {"index": {"_index": "your_test_index", "_type": "doc_type"}}, .' | curl -XPOST localhost:9200/_bulk --data-binary @-
Diese sehr schön funktioniert, aber es ist super langsam.
Ich habe versucht, auch den Python-Client zu verwenden, aber ich muss immer noch Zeile für Zeile lesen und sie nacheinander indizieren.
Gibt es eine Möglichkeit, die komplette Datei zu "pushen" und ES anzuweisen, alle Zeilen auf die gleiche Weise zu bearbeiten? Oder mit anderen Worten: Wie kann man JAR-Objekte in einer Batch-Verarbeitung effizient indexieren?
Können Sie "groß" definieren? Wie viele Zeilen/Dokumente haben Sie und wie groß ist jedes Dokument? – Val
Zum Beispiel: 20-30M Dokumente und insgesamt 6-10GB – Dror