我对 Solr Schema 文件做了一些更改,我发现我被迫重新启动 SolR 才能让 Solr 使用新的架构更新运行。
它托管在一台服务器上,其中 solr 从 start.jar 文件运行,但我不确定它是如何启动的(可能使用 nohup)
我已经找到了一种方法来阻止 SolR 回答另一个问题(https://stackoverflow.com/questions/2150767/how-to-start-solr-automatically):
kill `ps uax | grep -i "java -jar start.jar" | head -n 1 | awk '{print $2}'`
之后,我用“java -jar start.jar”启动 SolR。
这是重新启动的正确方法吗?或者是否有内置/更好的方法来重新启动 jar?
答案1
在Websolr我们使用自定义init.d
脚本和监控启动 Solr 并确保它保持运行。
也就是说,对于更简单的自托管设置,我建议使用暴发户如果您的系统有 Upstart,则启动和停止 Solr。Upstart 脚本的优点是相当简单,并且 Upstart 在进程崩溃时可以很好地重新启动进程。此外,启动和停止命令(分别为start
和stop
)非常容易记住,以便您下次需要让 Solr 了解新配置时使用。
这是一篇很好的博客文章,涵盖了使用 Upstart 启动 Solr。我已将他们的 upstart 脚本复制到下面;请确保更新相关路径以匹配您的系统:
description "Solr Search Server"
# Make sure the file system and network devices have started before
# we begin the daemon
start on (filesystem and net-device-up IFACE!=lo)
# Stop the event daemon on system shutdown
stop on shutdown
# Respawn the process on unexpected termination
respawn
# The meat and potatoes
exec /usr/bin/java -Xms128m -Xmx256m -Dsolr.solr.home=/path/to/solr/home -Djetty.home=/path/to/jetty -jar /path/to/jetty/start.jar >> /var/log/solr.log 2>&1
答案2
您可以尝试这种方法http://wiki.apache.org/solr/CoreAdmin#RELOAD。
使用这样的命令
http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0
将重新加载所有配置文件,并且在核心重新启动时执行 SOLR 查询时不会遇到问题。
答案3
对于 SolrCloud,从 solr 文件夹运行:
bin/solr restart -e cloud -noprompt