如何执行通过SolrJ客户端远程Solr的核心备份?(How to perform a remote

2019-07-05 19:58发布

我想编写一个基于SolrJ一个Java客户端的全部核心数据拉从远程服务器Solr的一个文件。 后来我想重播该文件到另一台远程服务器Solr的核心。

什么是实现这一功能的最好方法是什么?

Answer 1:

现在已经可以用最新的Solr的版本。

为了一个Solr的服务器上实现备份和另外一个恢复需要做到以下几点:

  1. 对于每个Solr的安装在solr.xml设置备份库指向一些共享驱动器。 例如,可以使用HDFS(此配置需要-Dsolr.hdfs.home=...添加到启动脚本):
<solr>
...
<backup>
    <repository name="hdfs-repo" class="org.apache.solr.core.backup.repository.HdfsBackupRepository" default="false">
      <str name="location">${solr.hdfs.home}/backup</str>
      <str name="solr.hdfs.home">${solr.hdfs.home:}</str>
      <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str>
    </repository>
</backup>
</solr>
  1. 从一台服务器创建备份:
SolrClient client1 = ...;
CollectionAdminRequest.Backup request1 = new CollectionAdminRequest.Backup(oldCollectionName, backupName);
request1.setRepositoryName("hdfs-repo");
request1.process(client1);
  1. 然后从另一台服务器上的备份还原:
SolrClient client2 = ...;
CollectionAdminRequest.Restore request2 = new CollectionAdminRequest.Restore(newCollectionName, backupName);
request2.setRepositoryName("hdfs-repo");
request2.process(client2);

本例将Solr的7.5,不过貌似功能已经有在6.6(请参阅备份/恢复6.6 )。



Answer 2:

不幸的是,Solr中也不solrj没有这样的功能。

但如果你有存储在索引中的所有领域 ,你可能只是读出的所有文件,并将其储存您想要的方式。



Answer 3:

检查是否适用于您的情况:

备份 -您可以执行备份,但备份将只在服务器上创建。

创建于主备份,如果有服务器提交的指标数据,否则什么也不做。 这是非常有用采取定期备份。

您可以使用Solr的复制来复制指数的任何远程服务器的Solr的内容。

所以,你可以复制你的指标到本地框,然后再复制它来遥控盒或备份,只是内容传输到遥控盒。



文章来源: How to perform a remote Solr core backup through SolrJ client?