2015-07-03 3 views
8

Я очень новичок в использовании Elasticsearch в приложении Rails и использую жевательный камень для его реализации. Когда я запускаю приложение rails в режиме разработки через rails s, я запускаю Elasticsearch через команду elasticsearch и запускаю rake chewy:reset:all для создания индекса для моих данных.Что происходит с индексом elasticsearch при остановке сервера rails?

Все работает нормально, но если я перезапущу сервер, мне нужно снова запустить команду rake chewy:reset:all, чтобы перестроить индекс, иначе я получаю сообщение об ошибке. Что происходит с индексом при перезапуске сервера? Разве это уничтожается, когда сервер остановлен?

Я не очень хорошо знаком с тем, как функции Elasticsearch так оценят любого, кто проливает немного света на то, что происходит за кулисами.

+0

И какая ошибка? –

+0

Посмотрев на это еще немного, я понял, что это мои тесты функций огурца, которые каким-то образом влияют на мой индекс elasticsearch. Что меня путают, так как я был под впечатлением, что конфигурация «Chewy.settings = {prefix: 'test»} создаст отдельные индексы для сред разработки и тестирования – Cu1ture

ответ

0

Я никогда не пользовался Chewy, но, судя по их документам, если вы поместите «Chewy.settings = {префикс: 'test'}" в config/initializers/chewy.rb, он будет префикс все с помощью '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 в терминале, думать о нем, как отдельный сервер, Jus t нравится rails s. Он полностью независим от вашего сервера приложений. Будучи самим пользователем Chewy, я думаю, что вы имеете дело с загрязненными индексами. Ниже приведен порядок устранения неполадок:

Проверьте, обновляется ли индекс при добавлении/удалении записей в базу данных. Если у Chewy есть индексный документ, который не имеет соответствующей записи в вашей базе данных, вы можете получить некоторые неожиданные ошибки. По Chewy's README:

Это также хорошая идея, чтобы настроить: стратегию перепускной внутри вашего набор тестов и импорт объектов только вручную, когда это необходимо, и использовать Chewy.massacre при необходимости промывать индексы тестов ES перед каждым примером , Это позволит вам минимизировать ненужные запросы 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 
Смежные вопросы