Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过SolrJ客户端执行远程Solr core备份?_Solr_Backup_Solrj - Fatal编程技术网

如何通过SolrJ客户端执行远程Solr core备份?

如何通过SolrJ客户端执行远程Solr core备份?,solr,backup,solrj,Solr,Backup,Solrj,我想编写一个基于SolrJ的java客户机,它将整个核心数据从远程Solr服务器拉到一个文件中。稍后,我想将此文件重播到另一个远程Solr服务器核心 实现此功能的最佳方法是什么?不幸的是,solr和solrj中都没有此类功能 但是,如果索引中存储了所有字段,则可以读取所有文档并按您希望的方式存储它们。检查它是否适用于您的案例: -您可以执行备份,但备份将仅在服务器上创建 如果主服务器中存在提交的索引数据,则在主服务器上创建备份 服务器,否则什么也不做。这对于定期备份很有用 您可以使用将索引的内容

我想编写一个基于SolrJ的java客户机,它将整个核心数据从远程Solr服务器拉到一个文件中。稍后,我想将此文件重播到另一个远程Solr服务器核心


实现此功能的最佳方法是什么?

不幸的是,solr和solrj中都没有此类功能


但是,如果索引中存储了所有字段,则可以读取所有文档并按您希望的方式存储它们。

检查它是否适用于您的案例:

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

如果主服务器中存在提交的索引数据,则在主服务器上创建备份 服务器,否则什么也不做。这对于定期备份很有用

您可以使用将索引的内容复制到任何远程Solr服务器


因此,您可以将索引复制到本地框,然后将其再次复制到远程框或备份,然后将内容传输到远程框。

现在,最新的Solr版本就可以了

要在一台Solr服务器上实现备份并在另一台Solr服务器上实现恢复,需要执行以下操作:

  • 对于Solr.xml中的每个Solr安装,请设置备份存储库以指向某个共享驱动器。例如,可以使用HDFS(此配置需要将
    -Dsolr.HDFS.home=…
    添加到开始脚本中):
  • 
    ...
    ${solr.hdfs.home}/backup
    ${solr.hdfs.home:}
    ${solr.hdfs.confdir:}
    
  • 从一台服务器创建备份:
  • SolrClient客户端1=。。。;
    CollectionAdminRequest.Backup request1=新的CollectionAdminRequest.Backup(oldCollectionName,backupName);
    请求1.setRepositoryName(“hdfs回购”);
    请求1.流程(客户端1);
    
  • 然后从另一台服务器上的备份还原:
  • SolrClient客户端2=。。。;
    CollectionAdminRequest.Restore request2=新的CollectionAdminRequest.Restore(newCollectionName,backupName);
    请求2.setRepositoryName(“hdfs回购”);
    请求2.流程(客户端2);
    
    此示例适用于Solr7.5,但该功能似乎已经在6.6中出现(请参阅)