如何在不重新启动 Solr 服务器的情况下添加 Solr 核心?

如何在不重新启动 Solr 服务器的情况下添加 Solr 核心?

问题

如何在不重新启动 Solr 服务器的情况下添加 Solr 核心?

这可能吗?

我目前添加 Solr 核心的方式(服务器重启)

根据此常见问题解答我执行以下操作:

  1. 复制现有的 Solr 核心
  2. 通过打开文件core.properties并编辑字段来重命名核心名称name,例如name=my_core
  3. 重新启动 Solr Windows 服务

我首选的添加 Solr 核心的方式(没有服务器重启)

与上面相同,但在步骤 2 之后,我希望有某种方法让核心在 Solr Web 界面中可见,而不必重新启动整个服务器。

我迄今为止的研究

互联网上的资源表明这应该是可行的,但我还无法让它发挥作用。

论坛:无需重新启动/重新加载 Solr 即可加载核心

本论坛他们只是说“是的,这是可能的”,并指出这一点Solr 文档页面名为 CoreAdmin

Serverfault 问题:solr core 重新加载,无需重启 tomcat

这个 serverfault 问题solr core 重新加载,无需重启 tomcat一个答案这表明#RELOAD 部分与上述 CoreAdmin Solr 文档相同,但我无法让 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 标准版
  • Solr 5.1.0

答案1

  1. 复制现有的 Solr 核心
  2. 通过打开文件 core.properties 并编辑字段名称(如 name=my_core)来重命名核心名称
  3. 重新启动 Solr Windows 服务
  4. 在 Solr Web 界面上,选择Core Admin并单击按钮Add Core
  5. 类型

    名称 =my_core

    实例目录:my_core

  6. 点击按钮Add Core

Solr 核心管理员添加核心

相关内容