2015-07-03 45 views
8

我是很新的Rails應用程序中使用Elasticsearch和現在用的耐嚼的寶石來實現它。當我在開發模式通過rails s運行我的Rails應用程序然後我通過elasticsearch命令運行Elasticsearch和運行rake chewy:reset:all創建我的數據的索引。當我停止rails服務器時,我的elasticsearch索引會發生什麼?

一切正常這樣做,但如果我重新啓動服務器,我不得不再次運行rake chewy:reset:all命令重建索引,否則我得到一個錯誤。重新啓動服務器時索引會發生什麼變化?服務器停止時會銷燬嗎?

我不是很熟悉如何Elasticsearch功能,因此希望瞭解脫落的人對什麼是幕後的一盞小燈。

+0

什麼是錯誤? –

+0

看了這一些後,我已經意識到,這是我的黃瓜功能測試,以某種方式影響我的elasticsearch指數。當我在印象之下感到困惑時,「Chewy.settings = {prefix:'test'}」配置會爲開發和測試環境創建單獨的索引 – Cu1ture

回答

0

我從來沒有使用過Chewy,但通過他們的文檔判斷,如果在config/initializers/chewy.rb中放置了「Chewy.settings = {prefix:'test'}」,它將以'test'發展。當然,我不知道這是否是你放置它的地方。也

注意,黃瓜具有運行在開發模式的測試(https://github.com/cucumber/cucumber-rails/issues/222)的傾向。

因此,嘗試刪除「Chewy.settings = {前綴:‘測試’}」從您的代碼,而是把這樣的事情在你的chewy.yml文件:

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

,然後添加這您黃瓜env.rb文件:

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

,並嘗試與耙黃瓜再次運行黃瓜

0

當你在終端運行elasticsearch,把它作爲一個單獨的服務器,強制像你的rails s。它完全獨立於應用程序服務器運行。作爲一名耐用的用戶,我認爲你正在處理受污染的索引。以下是如何排查問題:

檢查您是否在將記錄添加/刪除到數據庫時更新索引。如果耐嚼具有索引文檔,在數據庫中沒有匹配的記錄,則可能會出現一些意外錯誤。據Chewy's README

這也是一個不錯的主意來設置:旁路策略測試套件和進口對象中需要手動只有當,並在需要每個實例之前,沖水試驗ES指數時使用Chewy.massacre 。這將允許您最小化不必要的ES請求並減少開銷。

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 
相關問題