2015-07-03 3 views
8

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 im Entwicklungsmodus über rails s starte, starte ich Elasticsearch über den Befehl elasticsearch und führe die rake chewy:reset:all aus, um einen Index für meine Daten zu erstellen.Was passiert mit meinem ElasticSearch-Index, wenn ich den Rails-Server stoppe?

Alles funktioniert gut dabei, aber wenn ich den Server neu starten muss ich den rake chewy:reset:all Befehl 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 zerstört, wenn der Server gestoppt wird?

Ich bin nicht sehr vertraut mit, wie Elasticsearch funktioniert, würde also jemanden schätzen, der ein wenig Licht auf das wirft, was hinter den Kulissen geschieht.

+0

Und was ist der Fehler? –

+0

Nachdem ich mir das genauer angeschaut habe, habe ich gemerkt, dass es meine Gurkenfunktionstests sind, die irgendwie meinen Elastizitätsindex beeinflussen. Was mich verwirrt, da ich der Ansicht war, dass die Konfiguration "Chewy.settings = {prefix: 'test'}" separate Indizes für Entwicklungs- und Testumgebungen erstellen würde – Cu1ture

Antwort

0

Ich habe noch nie Chewy verwendet, aber nach ihrer Dokumentation zu urteilen, wenn Sie "Chewy.settings = {Präfix: 'test'}" in config/initializers/chewy.rb setzen, wird alles mit 'test' vorangestellt, auch in Entwicklung. Ich weiß natürlich nicht, ob Sie das hier angeben.

Beachten Sie auch, dass Gurken die Tendenz haben, Ihre Tests im Entwicklungsmodus auszuführen (https://github.com/cucumber/cucumber-rails/issues/222).

Deshalb versuchen die "Chewy.settings = {prefix: 'test'}" Entfernen aus dem Code, und stattdessen so etwas wie dies in Ihrer chewy.yml Datei setzen:

# config/chewy.yml 
cucumber: 
    host: 'localhost:9200' 
    prefix: 'test' 

Und dann dieses Add auf Ihre Gurke env.rb Datei:

ENV["RAILS_ENV"] ||= 'cucumber' 

Und versuchen Gurke wieder mit Harke Gurke

0

Wenn Sie elasticsearch in Ihrem Terminal laufen, betrachten Sie es als einen separaten Server, jus läuft t wie deine 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. Nach Chewy's README:

Es ist auch eine gute Idee, die einzurichten: Bypass-Strategie in Ihrer Testsuite und Import Objekte manuell nur bei Bedarf, und verwenden Sie Chewy.massacre wenn vor jedem Beispiel spülen Test ES-Indizes erforderlich . Dadurch können Sie unnötige ES-Anforderungen minimieren und den Overhead reduzieren.

RSpec.configure do |config| 
    config.before(:suite) do 
    Chewy.strategy(:bypass) # if you're not using RSpec, copy this line and paste it in the setup script of your suite. 
    end 
end 
Verwandte Themen