2013-06-09 6 views
6

Ich habe einen ElasticSearch-Index mit rund 200 Mio. Dokumenten, Gesamtindexgröße von 90 GB.Wie man ElasticSearch schnell neu indiziert?

Ich habe das Mapping geändert, daher möchte ich, dass ElasticSearch alle Dokumente neu indiziert.

Ich schrieb ein Skript, das einen neuen Index erstellt (mit der neuen Zuordnung), dann geht über alle Dokumente im alten Index und legt dann in die neue.

Es scheint zu funktionieren, aber das Problem ist, dass es extrem langsam arbeitet. Es begann mit 300 Dokumenten/Minute vor zwei Tagen, und jetzt ist die Geschwindigkeit 150 Dokumente/Minute.

Das Skript läuft auf einem Rechner im gleichen Netzwerk die elastischen Suchmaschinen in.

Mit einer solchen Geschwindigkeit wird es einen Monat für die Wieder Index benötigen zu beenden.

Kennt jemand etwas schnellere Technik, um einen elastischen Suchindex neu zu indizieren?

Antwort

0

Der richtige Weg, wie mit Elasticsearch wiederindiziert werden, ist die Verwendung der scan und scroll APIs, die von Pyes unterstützt werden sollten.

Es scheint, als ob die Pyes-Bibliothek eine reindex Methode hat, aber ich habe keine Erfahrung damit.

(Wenn Sie über mit Ruby über Python bekommen würde :), die Tire Ruby-Client hat eine Index#reindex Methode: https://github.com/karmi/tire/blob/master/test/integration/reindex_test.rb. Es sollte für Ihre Daten schnell genug sein)

+0

Dank Karmi! Haben Sie eine Näherung, wie hoch der erwartete Zeitpunkt für eine solche Operation bei einem Index von 90 GB (200 Mio. Dokumente) sein sollte? – diemacht

+0

Es hängt davon ab, ob Sie die Operation paralellisieren können oder nicht. Elasticsearch kann ziemlich hohe Schreiblast verarbeiten, aber das Indexing-Skript ist normalerweise der Engpass. Versuchen Sie, nur den Teil der Daten neu zu indizieren, und extrapolieren Sie - die Leistung der Scan-/Scroll-API sollte nicht mit der Zeit "abfallen". – karmi

+2

Es scheint, dass Tire veraltet ist. Elastic listet nun Kunden hier auf: https://github.com/elastic/elasticsearch-rails – spuder

Verwandte Themen