Rails 4: RSolr::Error::Http (RSolr::Error::Http - 404 не найдено

Я нахожусь в процессе обновления своего приложения до Rails 4, и теперь у меня есть сервер rails, а также sunspot solr, после долгих возни, чтобы запустить, я могу получить доступ к странице администратора Solr. Однако, когда я пытаюсь получить доступ к solr из моего приложения для разработки rails для поиска или индексирования, я получаю следующую ошибку

RSolr::Error::Http (RSolr::Error::Http - 404 Not Found
Error:     Not Found

Request Data: "fq=type%3AMatch&fq=date_in_utc_d%3A%7B2013%5C-11%5C-29T21%5C%3A00%5C%3A00Z+TO+%2A%7D&fq=approval__s%3AAPPROVED&sort=date_d+asc&q=london&fl=%2A+score&qf=caption_text%5E10+city_name_text%5E10+team_name_text%5E10+&defType=edismax&start=0&rows=30"

Backtrace: /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/rsolr-1.0.9/lib/rsolr/client.rb:268:in `adapt_response'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/rsolr-1.0.9/lib/rsolr/client.rb:175:in `execute'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/rsolr-1.0.9/lib/rsolr/client.rb:161:in `send_and_receive'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot_rails-2.1.0/lib/sunspot/rails/solr_instrumentation.rb:16:in `block in send_and_receive_with_as_instrumentation'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.1/lib/active_support/notifications.rb:159:in `block in instrument'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.1/lib/active_support/notifications.rb:159:in `instrument'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot_rails-2.1.0/lib/sunspot/rails/solr_instrumentation.rb:15:in `send_and_receive_with_as_instrumentation'
(eval):2:in `post'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot-2.1.0/lib/sunspot/search/abstract_search.rb:45:in `execute'
/Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/sunspot-2.1.0/lib/sunspot/session.rb:59:in `search'):
  <a href="txmt://open?url=file:///Users/bashar/rails-projects/myapp/app/models/match.rb&amp;line=474&amp;column=1">app/models/match.rb:474:in `upcoming_games'</a>
  <a href="txmt://open?url=file:///Users/bashar/rails-projects/myapp/app/controllers/tickets_controller.rb&amp;line=34&amp;column=1">app/controllers/tickets_controller.rb:34:in `search'</a>


  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.4ms)
  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
  Rendered /Users/bashar/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (17.3ms)

Это файл sunspot.yml.

production:
  solr:
    hostname: ENV['WEBSOLR_URL']
    port: 80
    log_level: WARNING
    path: /solr/production
    # read_timeout: 2
    # open_timeout: 0.5
development:
  solr:
    hostname: 192.168.0.11
    port: 8981
    log_level: INFO
    path: /solr/development
test:
  solr:
    hostname: localhost
    port: 8981
    log_level: WARNING
    path: /solr/test

Я проверил solr, данные находятся на правильном пути. Я знаю, что есть похожие сообщения, но их решения не сработали. Я пытался прокомментировать путь: или использовать /solr/default, или просто /solr, или использовать ip вместо localhost безрезультатно

Есть идеи? Советы о том, как я могу увидеть, где пытается достичь запрос solr rails suntspot?


person Bashar Abdullah    schedule 30.11.2013    source источник
comment
Я видел это раньше, когда дело доходит до обновления версий вещей и рассинхронизации. Попробуйте удалить параметры пути из sunspot.yml. Вы всегда можете открыть драгоценный камень в строке ошибки и отладить его.   -  person sevenseacat    schedule 02.12.2013
comment
У меня такая же проблема. Пока ничего не сработало.   -  person Eric Coulthard    schedule 03.12.2013
comment
@sevenseacat Я уже пытался удалить путь, но безуспешно. Похоже, это режим отладки.   -  person Bashar Abdullah    schedule 03.12.2013
comment
@climber247 Climber247, просто чтобы убедиться, что у нас та же проблема, мой файл sunspot-solr-development.log не содержит ошибок. Во время обновления до Solr 1.4 вам необходимо обновить некоторые файлы конфигурации.   -  person Bashar Abdullah    schedule 03.12.2013
comment
Предупреждения есть, ошибок нет. Ваше решение не сработало для меня. :(   -  person Eric Coulthard    schedule 04.12.2013
comment
Я был бы рад попытаться помочь. Но лучше создать новую тему, если только она не имеет близкого отношения. Что вы получаете?   -  person Bashar Abdullah    schedule 04.12.2013


Ответы (3)


Решил! Выполненные шаги в ответе предлагается здесь с небольшими изменениями:

  1. остановка всех запущенных процессов solr
  2. удалив папку solr, НО оставьте ее копию доступной на тот случай, если вам понадобятся старые настройки, синонимы и тому подобное.
  3. драгоценный камень удалить все связанные драгоценные камни
  4. пакетная установка
  5. рельсы генерируют sunspot_rails:установить
  6. начать соль
  7. reindex solr: теперь, когда я использую mongoid, rake sunspot:reindex, похоже, не работает, но выход из консоли и выполнение Sunspot.index!(Model.all) делает это за меня.
person Bashar Abdullah    schedule 03.12.2013
comment
Ключевым моментом здесь является удаление драгоценных камней — я сделал все остальные шаги, но именно это действительно решило проблему. Спасибо! - person xdotcommer; 15.01.2014
comment
@xdotcommer рад, что это кому-то помогло, и спасибо за дополнительные разъяснения. - person Bashar Abdullah; 16.01.2014

Мое решение этой проблемы: прокомментируйте параметр пути (конфигурация по умолчанию) в файле конфигурации config/sunspot.yml.

Значение по умолчанию: #path: /solr/development.

После этого,

  • Остановите все процессы solr,

    ps aux | grep 'solr' 
    kill PROCESS_ID
    
  • Удалите папку «solr», которая находилась внутри каталога вашего приложения.

    rm -rf solr
    

Это удалит ваши предыдущие настройки.

  • Затем rake sunspot:solr:start

  • После запуска сервера solr снова попробуйте переиндексировать,

        rake sunspot:reindex
    

Проблема должна быть решена.

Я использовал полнотекстовый поиск sunspot solr для одного из моих проектов, где я решил вышеупомянутую проблему.

например справочная ссылка - http://moreaboutsports.com/

person rahul patil    schedule 16.06.2014
comment
Спасибо большое. Меня устраивает. Я думаю, это из-за неправильных прав доступа к файлам в проекте. Я работаю на временном сервере, и там у меня всегда проблемы с разрешениями. - person Michael; 26.08.2014

Проблема заключалась в том, что гем пытался использовать свой собственный каталог гем для Jetty tempDirectory, и, конечно же, у него не было прав на запись, поэтому сервер так и не запустился. Казалось бы, он запускается в фоновом режиме, но на самом деле он не работал. При попытке запустить его на переднем плане rake sunspot:solr:run он показывал некоторые ошибки, но мне все равно приходилось отслеживать их в файле конфигурации в геме. Вы должны отредактировать конфигурацию драгоценного камня, чтобы исправить это. Я добавил проблему в GitHub:

https://github.com/sunspot/sunspot/issues/561

Проблема в файле sunspot_solr-2.1.0/bin/contexts/solr.xml. Вы должны установить tempDirectory на что-то с разрешениями на запись, например /tmp, вместо '.', каталога gem.

Если у вас по-прежнему возникают проблемы с запуском Solr, попробуйте удалить каталог tmp и перезапустить сервер. У меня была странная ситуация, когда он указывал на каталог /tmp и работал, но когда я перезапускал сервер, он продолжал выдавать мне ошибку 404! Каким-то образом удалились все файлы, от которых это зависит! Поскольку каталог все еще существовал, он не копировал WAR и не расширял его. Если вы удалите каталог tmp, он повторно скопирует и повторно расширит файл WAR.

ls /tmp/solr-webapp/

Это в дополнение к редактированию файла /usr/local/rvm/gems/ruby-2.0.0-p247.../gems/sunspot_solr-2.1.0/solr/contexts/solr.xml, конечно.

person Chloe    schedule 19.03.2014