Search code examples
tomcatsolrmulticore

Tomcat SOLR multiple cores setup


I have spend all morning trying to set up multiple cores on a SOLR installation that runs under Apache Tomcat server without success. My solr.xml looks like this:

<solr persistent="false" sharedLib="lib">
  <cores adminPath="/admin/cores">
    <core name="core0" instanceDir="/multicore/core0">   
        <property name="dataDir" value="/multicore/core0/data" />
    </core>
    <core name="core1" instanceDir="/multicore/core1">
        <property name="dataDir" value="/multicore/core1/data" />
    </core>
  </cores>
</solr>

What is the correct directory structure? Do I need to do change something in the solrconfig.xml?


Solution

  • Check that your instanceDir values are relative to -Dsolr.solr.home. If -Dsolr.solr.home is 'multicore', then your instanceDir should be only "core0".

    If you put your data folder inside your instanceDir, you should not have to specify its path:

    <?xml version='1.0' encoding='UTF-8'?>
    <solr persistent="true">
    <cores adminPath="/admin/cores">
        <core name="core0" instanceDir="core0" />
        <core name="core1" instanceDir="core1" />
    </cores>
    </solr>
    

    You should not have to set anything in solrconfig.xml. But if you need to configure an handler independantly of the core location, you can use the variable ${solr.core.instanceDir}.

    UPDATE

    To set the solr.solr.home variable with Tomcat, use the JAVA_OPTS environment variable before starting Tomcat:

    JAVA_OPTS="-Dsolr.solr.home=multicore"
    export JAVA_OPTS
    tomcat/bin/catalina.sh start
    

    Make sure that "multicore" is correctly set relative to the working directory. Per example, if solr.solr.home='multicore', you have to launch Tomcat from the directory where "multicore" is located.