2

Question

How do I add a Solr core without restarting the Solr server?

Is it possible at all?

My current way of adding Solr cores (with server restart)

According to this FAQ I do the following:

  1. Copy an existing Solr core
  2. Rename the core name by opening the file core.properties and editing the field name like name=my_core
  3. Restart the Solr Windows service

My preferred way of adding Solr cores (without server restart)

Same as above but after step 2 I'd like to have some way to make the core visible in the Solr web interface without having to restart the entire server.

My research so far

Resources on the Internet indicate that it should be possible, but I havent been able to get it to work yet.

Forum: Load cores without restarting/reloading Solr

In this forum they just say "yes, it is possible" and point to this Solr documentation page called CoreAdmin.

Serverfault question: solr core reload without an tomcat restart

This serverfault question solr core reload without an tomcat restart has an answer which points to #RELOAD section of the same CoreAdmin Solr documentation as above, but I can't get Solr to load new cores with neither

http://localhost:8983/solr/admin/cores?action=RELOAD&core=my_core 

nor

http://localhost:8983/solr/admin/cores?action=RELOAD

For http://localhost:8983/solr/admin/cores?action=RELOAD&core=my_core I get an HTTP 400 Bad Request.

For http://localhost:8983/solr/admin/cores?action=RELOAD I get the following NullPointerException which I don't know how to interpret:

<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>

Versions

  • Windows Server 2008 R2 Standard
  • Solr 5.1.0
Lernkurve
  • 131
  • 1
  • 7
  • Why RELOAD? Shouldn't you rather invoke CREATE to add a new core? – Oliver Jul 02 '15 at 09:23
  • @Oliver: Because I already copied and pasted an existing core, I don't need to CREATE the core anymore (see section *My current way of adding Solr cores*). Therefore, I just want the new core to show up and assumed a RELOAD would suffice even if it isn't a RELOAD, but only a LOAD to be precise. – Lernkurve Jul 02 '15 at 11:29

1 Answers1

1
  1. Copy an existing Solr core
  2. Rename the core name by opening the file core.properties and editing the field name like name=my_core
  3. Restart the Solr Windows service
  4. On the Solr web interface, select Core Admin and click on button Add Core
  5. Type

    name = my_core

    instanceDir: my_core

  6. Click button Add Core

Solr Core Admin Add Core

Lernkurve
  • 131
  • 1
  • 7
  • And if you want to know what query this did, so you can do it yourself, you can watch the network tab of your browser's developer tools. You'll see it go by as an AJAX request. – mlissner Sep 21 '16 at 19:56
  • 1
    @Lernkurve, I don't have any existing core on my fresh Solr 7.0.1 installation. What do I need to do? – SAVAFA Oct 19 '17 at 03:24