无法使用rails app中的sunspot / solr重新索引 – 错误:solr配置中出现严重错误
好的,所以我有一个简单的rails应用程序,现在我正在尝试为搜索function实现太阳黑子。 但是,在我使用rails g sunspot_rails生成配置文件之后:安装并在我启动服务器之后它已经在我的rails app-dir中生成了solr-dir并且我运行了bundle exec rake sunspot:solr:reindex I获得以下跟踪:
cakism@saraswati:~/railscode/calendar$ bundle exec rake sunspot:solr:reindex --trace ** Invoke sunspot:solr:reindex (first_time) ** Invoke sunspot:reindex (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute sunspot:reindex Skipping progress bar: for progress reporting, add gem 'progress_bar' to your Gemfile rake aborted! RSolr::Error::Http - 500 Internal Server Error Error: Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: false in null ------------------------------------------------------------- Request Data: "type:Event" Backtrace: /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:230:in `adapt_response' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:167:in `execute' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:161:in `send_and_receive' (eval):2:in `post' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:67:in `update' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:131:in `delete_by_query' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/indexer.rb:55:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `each' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove_all' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:230:in `adapt_response' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:167:in `execute' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:161:in `send_and_receive' (eval):2:in `post' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:67:in `update' /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:131:in `delete_by_query' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/indexer.rb:55:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `each' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove_all' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot.rb:464:in `remove_all' /var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/searchable.rb:178:in `solr_remove_all_from_index' /var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/searchable.rb:197:in `solr_reindex' /var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/tasks.rb:54 /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/class_set.rb:16:in `each' /var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/class_set.rb:16:in `each' /var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/tasks.rb:53 /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `execute' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `invoke_with_call_chain' /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `invoke_prerequisites' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `invoke_with_call_chain' /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `run' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' /var/lib/gems/1.8/gems/rake-0.9.2.2/bin/rake:33 /var/lib/gems/1.8/bin/rake:19:in `load' /var/lib/gems/1.8/bin/rake:19 Tasks: TOP => sunspot:solr:reindex => sunspot:reindex
我特别好奇这个:
If you want solr to continue after configuration errors, change: false in null
为什么会在null中说? 与我有相同问题的其他post指定了solr / conf / solrconfig.xml,并且当我将其更改为false时,没有其他任何事情发生。
如果我从我的模型中删除可搜索的块,我不会收到任何错误(但我想这是因为它不会尝试做任何事情)
我通过XMLvalidation器运行配置文件,它说它在2 <-1 5 <-2 6 <90%时起始标签名称不佳。 但是,即使我删除然后提供有效XML的行,重新启动solr,并尝试重新索引,我仍然会得到相同的错误。
我开始在这里绝望了,所以任何帮助都非常有用!
我遇到了一个非常类似的问题并通过解决了这个问题
- 停止所有正在运行的solr进程
- 删除solr文件夹
- 关闭/重新启动计算机
- gem卸载所有相关的gem
- 捆绑安装
- 开始solr
- reindex solr
它偶尔发生在我身上..在我的情况下,它是solr(不是太阳黑子)问题
试着去
http://localhost:8982/solr/admin or http://localhost:8983/solr/admin or http://[your.domain]:8983/solr/admin
(取决于您使用的环境)
看看你在solr web服务器下有什么错误
我看到java错误消息并修复它只需删除索引目录并重新启动solr
它开始表现得像预期的那样
希望它有所帮助
或者你可以重新安装gem。 这对我有用。
这是简单的方法( 不需要搞乱gem或重新启动计算机 ):
rake sunspot:solr:stop
如果已修改架构, site_root/solr/conf/schema.xml
的内容复制到剪贴板
接下来,删除site_root/solr
的整个solr文件夹
现在运行:
rake sunspot:solr:start
此命令将创建并重新填充已删除的solr文件夹。
如果您复制了上面的schema.xml,请再次打开schema.xml,选择所有内容,然后复制剪贴板的内容。 保存文件。
现在运行:
bundle exec rake sunspot:solr:reindex
更具体地说,我找到了我的问题的原因,希望这有助于任何想知道发生了什么的灵魂
首先,我删除了solr / data文件夹。 馊主意。 这导致了cakism所描述的错误。
重新启动,删除solr文件夹等将无济于事。 只是因为有一个Solr服务器运行的实例,即使使用太阳黑子也不会停止:solr:stop。 你必须通过以下方式杀死该实例:
rake sunspot:solr:stop # stop server ps -A | grep solr # you'll see the [PID] of the solr server kill [PID] # replace with the [PID] from above to completely kill the solr instance
之后,您可以继续删除solr文件夹并再次启动服务器
我面临同样的问题,最后我得到config / database.yml有错误的数据库名称,并且,我检查sunspot.yml,这个文件也有错误的配置,如IP地址。 我修改文件而不是开始工作。
对我来说, turn off/restart the computer
有很多依赖性(无法重新启动)并且从上面没有任何工作(我没有尝试重启)。 所以,我的工作解决方案是
- 转到应用程序根目录。
- 使用
ps aux | grep solr
ps aux | grep solr
找到solrprocess ID
- 停止solr进程使用
kill -9 4313
#对我来说4313是solr进程id -
在staging
rake sunspot:solr:start RAILS_ENV=staging
sunspot上启动solrrake sunspot:solr:start RAILS_ENV=staging
-
使用
rake sunspot:solr:reindex RAILS_ENV=staging
重新索引solrrake sunspot:solr:reindex RAILS_ENV=staging
而已。
注意: 根据您的需要更换环境