Merging Indexes

If you need to combine indexes from two different projects or from multiple servers previously used in a distributed configuration, you can use either the IndexMergeTool included in lucene-misc or the CoreAdminHandler.

To merge indexes, they must meet these requirements:

  • The two indexes must be compatible: their schemas should include the same fields and they should analyze fields the same way.

  • The indexes must not include duplicate data.

Optimally, the two indexes should be built using the same schema.

Using IndexMergeTool

To merge the indexes, do the following:

  1. Make sure that both indexes you want to merge are closed.
  2. Issue this command:

    java -cp $SOLR/server/solr-webapp/webapp/WEB-INF/lib/lucene-core-VERSION.jar:$SOLR/server/solr-webapp/webapp/WEB-INF/lib/lucene-misc-VERSION.jar org/apache/lucene/misc/IndexMergeTool /path/to/newindex /path/to/old/index1 /path/to/old/index2

    This will create a new index at /path/to/newindex that contains both index1 and index2.

  3. Copy this new directory to the location of your application’s Solr index (move the old one aside first, of course) and start Solr.

Using CoreAdmin

The MERGEINDEXES command of the CoreAdminHandler can be used to merge indexes into a new core – either from one or more arbitrary indexDir directories or by merging from one or more existing srcCore core names.

See the CoreAdminHandler section for details.