2015-07-03 14 views
8

Jestem bardzo nowy w używaniu Elasticsearch w aplikacji Rails i używam klejnotów do żucia do jego implementacji. Kiedy uruchamiam aplikację Rails w trybie programowania przez rails s, uruchamiam Elasticsearch poleceniem elasticsearch i uruchamiam rake chewy:reset:all w celu utworzenia indeksu dla moich danych.Co stanie się z moim indeksem elasticsearch po zatrzymaniu serwera?

Wszystko działa dobrze, ale po ponownym uruchomieniu serwera muszę ponownie uruchomić komendę rake chewy:reset:all, aby odbudować indeks, w przeciwnym razie wystąpi błąd. Co dzieje się z indeksem po ponownym uruchomieniu serwera? Czy jest on niszczony po zatrzymaniu serwera?

Nie jestem zbyt obeznany z funkcjami Elasticsearch, więc byłbym wdzięczny każdemu, kto rzuci trochę światła na to, co dzieje się za kulisami.

+0

A jaki jest błąd? –

+0

Po obejrzeniu tego więcej, zdałem sobie sprawę, że to moje testy cech ogórka, które w jakiś sposób wpływają na mój indeks elasticsearch. Które jestem zdezorientowany, ponieważ miałem wrażenie, że konfiguracja "Chewy.settings = {prefix:" test '} "tworzy oddzielne indeksy dla środowisk programistycznych i testowych – Cu1ture

Odpowiedz

0

Nigdy nie używałam Chewy, ale sądząc po ich dokumentach, jeśli wstawisz "Chewy.settings = {prefiks: 'test'}" w config/initializers/chewy.rb, będzie on poprzedzał wszystko "testem", także w rozwój. Nie wiem, czy to jest miejsce, w którym to umieścisz, oczywiście.

Należy również zauważyć, że ogórek ma tendencję do uruchamiania testów w trybie programowania (https://github.com/cucumber/cucumber-rails/issues/222).

Dlatego spróbuj usunąć "Chewy.settings = {prefix: 'test'}" z kodu, a zamiast tego umieścić coś takiego w pliku chewy.yml:

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

a następnie dodać ten do ogórka pliku env.rb:

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

i spróbuj ponownie uruchomiony z natarcia ogórek ogórek

0

Po uruchomieniu elasticsearch w terminalu, myśleć o nim jako oddzielny serwer, jus tak jak twój rails s. Działa całkowicie niezależnie od serwera aplikacji. Będąc sam użytkownikiem Chewy, myślę, że masz do czynienia z zanieczyszczonymi indeksami. Oto sposób rozwiązywania problemów:

Sprawdź, czy aktualizujesz indeks podczas dodawania/usuwania rekordów do bazy danych. Jeśli Chewy ma indeksowany dokument, który nie ma odpowiedniego rekordu w bazie danych, możesz uzyskać nieoczekiwane błędy. Według Chewy's README:

Jest to również dobry pomysł, aby skonfigurować Strategia obejścia wewnątrz Apartamencie testu i importu obiektów ręcznie tylko wtedy, gdy to konieczne, i używać Chewy.massacre razie potrzeby opróżnić indeksy Test ES przed każdym przykładzie . Pozwoli to zminimalizować niepotrzebne żądania ES i zmniejszyć narzut.

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