Ich verwende Tire und elasticsearch, um Suchfunktionen für ein MongoMapper-Modell bereitzustellen, das Teil einer Rails App ist. Ich stolperte über ein Problem, wo die Zuordnungen für dieses Modell nicht aktualisiert wurden, wenn ich in eine Umgebung umgeschichtet, die die folgende Konfiguration verwendet (in config/Umgebungen/env_name.rb):Nachladen von Reifen-/Elasticsearch-Zuordnungen für ein Modell, das bereits Daten gespeichert hat
config.cache_classes = true
die Klasse allein didn Nachladen scheint das Problem nicht zu beheben (vielleicht sind die neuen Mappings vielleicht nicht inkompatibel mit vorhandenen Daten, denke ich?). stattdessen musste ich Folgendes tun:
MyModel.index.delete
<restart the app or reload the class>
MyModel.index.import MyModel.all
Ich fragte mich nur, ob es einen besseren Weg von a) gibt. Sicherstellen, dass die neuesten in meinem Modellcode definierten Zuordnungen nach jeder Bereitstellung von elasticsearch verwendet werden, aber b). Vermeiden Sie unnötige Repopulation des Index mit dem vollständigen Datensatz?
Wir verwenden normalerweise Chef, damit ich die drei Schritte automatisieren konnte, die ich erfolgreich ohne zu viel Mühe verwendete. Aber ich bin neu in Elasticsearch und Reifen, also dachte ich, dass es sehr wahrscheinlich ist, dass ich beides missbrauche oder Dinge unnötig schwierig mache.
Ich war ein wenig verwirrt von Ihrem letzten Absatz, ich verstehe nicht, wie Sie einen Alias zu einem anderen Index verwenden können, um die Innenstadt zu vermeiden. In dem von Ihnen beschriebenen Szenario Wird nicht gegen my-index gesucht, sondern nur gegen my-index-2012-12, während es neu indiziert wird? – concept47
Danke für die Details Antwort. Ich werde das als richtig bezeichnen, da ich keine Alternative finden kann. Es scheint als wäre die Antwort der Antwort, dass Sie die Daten in meinem Szenario neu indizieren müssen, und Sie können elasticsearch-Aliase verwenden, um Ausfallzeiten in diesem Szenario zu vermeiden.Hier ist der Link mit weiteren Informationen zu elasticsearch-Aliasen: http://www.elasticsearch.org/guide/reference/api/admin-indices-aliases.html Die Reifengithub-Seite verlinkt nun dazu und hat Informationen zu Indexaliasen – willjthomas
@ concept47 wie auf der Reifengithub-Seite jetzt: Sie können Ihre Daten in einen neuen Index indizieren (und möglicherweise einen Alias aktualisieren, sobald alles in Ordnung ist). Sie erstellen den vorhandenen Index also nicht neu, sondern erstellen eine neue Version und spiegeln dann den Alias. Bitte korrigieren Sie mich, wenn ich falsch liege – willjthomas