2015-07-03 10 views
8

Sono molto nuovo nell'usare Elasticsearch in un'applicazione Rails e sto usando la gemma gommosa per implementarlo. Quando eseguo la mia app per rails in modalità sviluppo tramite rails s, eseguo Elasticsearch tramite il comando elasticsearch ed eseguo il rake chewy:reset:all per creare un indice per i miei dati.Cosa succede al mio indice elasticsearch quando interrompo il server di rails?

Tutto funziona correttamente, ma se riavvio il server devo eseguire nuovamente il comando rake chewy:reset:all per ricostruire l'indice altrimenti ricevo un errore. Cosa succede all'indice quando riavvio il server? Viene distrutto quando il server viene arrestato?

Non ho molta familiarità con il modo in cui Elasticsearch funziona, quindi apprezzerei che qualcuno facesse luce su ciò che accade dietro le quinte.

+0

E qual è l'errore? –

+0

Dopo averlo guardato un po 'di più mi sono reso conto che sono i miei test di funzionalità di cetriolo a influenzare in qualche modo il mio indice elasticsearch. Di cui sono confuso poiché avevo l'impressione che la configurazione "Chewy.settings = {prefix: 'test'}" creerebbe indici separati per ambienti di sviluppo e test – Cu1ture

risposta

0

Non ho mai usato Chewy, ma a giudicare dai loro documenti se si inserisce "Chewy.settings = {prefisso: 'test'}" in config/initializers/chewy.rb farà precedere tutto con 'test', anche in sviluppo. Non so se è lì che lo metti, ovviamente.

Nota anche che il cetriolo ha la tendenza a eseguire i test in modalità di sviluppo (https://github.com/cucumber/cucumber-rails/issues/222).

Pertanto, provare a rimuovere il "Chewy.settings = {prefisso: 'test'}" dal codice, e invece mettere qualcosa di simile nel file chewy.yml:

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

E poi aggiungere questo al cetriolo file di env.rb:

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

E provare a eseguire di nuovo il cetriolo con il rastrello cetriolo

0

Quando si esegue elasticsearch nel vostro terminale, pensare ad esso come un server separato, jus Mi piace il tuo rails s. Funziona completamente indipendente dal tuo server delle applicazioni. Essendo io stesso un utente di Chewy, penso che tu abbia a che fare con indici inquinati. Ecco come risolvere il problema:

Verificare di aggiornare l'indice quando si aggiungono/eliminano record nel database. Se Chewy ha un documento indicizzato che non ha record corrispondenti nel database, è possibile ottenere alcuni errori imprevisti. Secondo Chewy's README:

E 'anche una buona idea per impostare il: strategia di bypass all'interno della vostra suite di test e importare oggetti manualmente solo quando necessario, e utilizzare Chewy.massacre quando necessario per scovare gli indici di test ES prima di ogni esempio . Ciò consentirà di ridurre al minimo le richieste ES non necessarie e di ridurre il sovraccarico.

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 
Problemi correlati