2015-07-03 43 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 
相关问题