Rails 4: RSolr:: Ошибка::Http (RSolr:: Ошибка::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&line=474&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&line=34&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/default, или просто /solr, или использовать ip вместо localhost безрезультатно
Любая идея? Советы о том, как я могу увидеть, куда пытается обратиться запрос suntspot solr рельсов?
3 ответа
Решил это! Следующие шаги в ответе предложены здесь с небольшими изменениями:
- остановка всех запущенных процессов solr
- удаление папки solr, НО держать ее копию доступной на случай, если вам понадобятся некоторые старые настройки, синонимы и тому подобное.
- драгоценный камень удалить все связанные драгоценные камни
- комплектация
- рельсы генерируют sunspot_rails: установить
- начать Solr
- reindex solr: Теперь, когда я использую mongoid, rake sunspot: reindex, похоже, не работает, но выход из консоли и выполнение Sunspot.index!(Model.all) делает это для меня.
Мое решение этой проблемы: прокомментируйте параметр пути (конфигурация по умолчанию) в файле конфигурации 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/
Проблема, с которой я столкнулся, заключалась в том, что гем пытался использовать свой собственный каталог гемов для временного каталога Jetty, и, конечно, у него не было разрешений на запись, поэтому сервер никогда не запускался. Казалось бы, запуск в фоновом режиме, но на самом деле он не работает. При попытке запустить его на переднем плане rake sunspot:solr:run
, это покажет некоторую ошибку, но мне все равно пришлось отследить ее до файла конфигурации в геме. Вы должны отредактировать конфигурацию gem, чтобы исправить это. Я добавил проблему в 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.