问题
如何在不重新启动 Solr 服务器的情况下添加 Solr 核心?
有可能吗?
我目前添加 Solr 内核的方式(服务器重启)
根据此常见问题解答,我执行以下操作:
- 复制现有的 Solr 核心
- 通过打开文件
core.properties
并编辑字段来重命名核心name
名称name=my_core
- 重启 Solr Windows 服务
我添加 Solr 内核的首选方式(无需重新启动服务器)
与上面相同,但在第 2 步之后,我希望通过某种方式使核心在 Solr Web 界面中可见,而无需重新启动整个服务器。
到目前为止我的研究
互联网上的资源表明它应该是可能的,但我还没有能够让它工作。
论坛:在不重新启动/重新加载 Solr 的情况下加载内核
在这个论坛中,他们只是说“是的,这是可能的”并指向这个名为 CoreAdmin 的 Solr 文档页面。
服务器故障问题:solr core reload without an tomcat restart
这个 serverfault question solr core reload without an tomcat restart有一个答案,它指向与上面相同的 CoreAdmin Solr 文档的#RELOAD 部分,但我无法让 Solr 加载新的核心
http://localhost:8983/solr/admin/cores?action=RELOAD&core=my_core
也不
http://localhost:8983/solr/admin/cores?action=RELOAD
因为http://localhost:8983/solr/admin/cores?action=RELOAD&core=my_core
我收到了 HTTP 400 错误请求。
因为http://localhost:8983/solr/admin/cores?action=RELOAD
我得到以下 NullPointerException 我不知道如何解释:
<response>
<lst name="responseHeader">
<int name="status">500</int>
<int name="QTime">0</int>
</lst>
<lst name="error">
<str name="trace">
java.lang.NullPointerException at java.util.TreeMap.getEntry(TreeMap.java:342) at java.util.TreeMap.containsKey(TreeMap.java:227) at java.util.TreeSet.contains(TreeSet.java:234) at org.apache.solr.handler.admin.CoreAdminHandler.handleReloadAction(CoreAdminHandler.java:726) at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestInternal(CoreAdminHandler.java:226) at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:189) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143) at org.apache.solr.servlet.SolrDispatchFilter.handleAdminRequest(SolrDispatchFilter.java:783) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:282) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:368) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72) at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:745)
</str>
<int name="code">500</int>
</lst>
</response>
版本
- Windows Server 2008 R2 标准版
- 索尔 5.1.0