Ich bin sehr neu in der Verwendung von Elasticsearch in einer Rails-Anwendung und verwende den zähen Edelstein, um es zu implementieren. Wenn ich meine Rails-App über rails s
im Entwicklungsmodus starte, führe ich Elasticsearch über den Befehl elasticsearch
aus und führe rake chewy:reset:all
aus, um einen Index für meine Daten zu erstellen.
Alles funktioniert gut, aber wenn ich den Server neu starte, muss ich den Befehl rake chewy:reset:all
erneut ausführen, um den Index neu zu erstellen, sonst erhalte ich einen Fehler. Was passiert mit dem Index, wenn ich den Server neu starte? Wird es beim Stoppen des Servers zerstört?
Ich bin nicht sehr vertraut mit der Funktionsweise von Elasticsearch. Ich würde mich freuen, wenn jemand ein wenig Licht in das Geschehen hinter den Kulissen wirft.
Ich habe Chewy noch nie benutzt, aber wenn man in der Dokumentation nach "Chewy.settings = {prefix: 'test'}" in config / initializers / chewy.rb schreibt, wird alles mit 'test' vorangestellt, auch in der Entwicklung . Ich weiß natürlich nicht, ob du das hier hingestellt hast.
Beachten Sie auch, dass Gurken dazu neigen, Ihre Tests im Entwicklungsmodus auszuführen ( Ссылка ).
Versuchen Sie daher, den Code "Chewy.settings = {prefix: 'test'}" aus Ihrem Code zu entfernen und fügen Sie stattdessen so etwas in Ihre chewy.yml-Datei ein:
%Vor%Und dann fügen Sie das zu Ihrer Gurke env.rb-Datei hinzu:
%Vor%Und versuchen Sie, Gurke wieder mit Rake Gurke
zu laufen Wenn Sie elasticsearch
in Ihrem Terminal ausführen, sollten Sie es als separaten Server betrachten, genau wie Ihre rails s
. Es läuft völlig unabhängig von Ihrem Anwendungsserver. Da ich selbst ein zäher Benutzer bin, denke ich, dass es sich um verunreinigte Indizes handelt. So beheben Sie Fehler:
Überprüfen Sie, ob Sie den Index aktualisieren, wenn Sie Datensätze zur Datenbank hinzufügen / löschen. Wenn Chewy über ein indiziertes Dokument verfügt, das in Ihrer Datenbank keinen übereinstimmenden Datensatz enthält, können Sie einige unerwartete Fehler erhalten. Laut Chewys README :
%Vor%Es ist auch eine gute Idee, die Bypass-Strategie in Ihrer Testsuite einzurichten und Objekte nur bei Bedarf manuell zu importieren. Verwenden Sie Chewy.massacre, wenn Sie ES-Indizes vor jedem Beispiel löschen möchten. Auf diese Weise können Sie unnötige ES-Anforderungen minimieren und den Verwaltungsaufwand reduzieren.
Tags und Links ruby ruby-on-rails indexing elasticsearch