我有两个相同的solr示例。一个用于生产,一个用于测试。我想将集合“NEWS”从prod迁移到test。prod和test都具有相同的集合和相同的配置。我只是想把数据从一个拷贝到另一个在Solr有办法做到这一点吗?
mzillmmw1#
如果服务器可以访问公共共享网络位置,则可以在生产节点上发出BACKUP命令,然后在测试节点上发出RESTORE命令:
curl -X POST http://prodnode:8983/api/collections -H 'Content-Type: application/json' -d ' { "backup-collection": { "name": "techproducts_backup", "collection": "techproducts", "location": "file:///path/to/my/shared/drive" } } ' curl -X POST http://testnode:8983/api/collections -H 'Content-Type: application/json' -d ' { "restore-collection": { "name": "techproducts_backup", "collection": "techproducts_v3", "location": "file:///path/to/my/shared/drive" } } '
如果没有网络驱动器,可以在本地创建备份,然后将其复制到另一个节点并在那里恢复。如果配置与您所说的相同,我会选择这条路线(它还将测试您是否能够进行备份和恢复)。另一个选择是在DIH中使用SolrEntityProcessor-但DIH没有与9.x捆绑,因此如果您使用9.x,则必须自己安装社区项目。
<dataConfig> <document> <entity name="sep" processor="SolrEntityProcessor" url="http://127.0.0.1:8983/solr/db " query="*:*" fl="*,orig_version_l:_version_,ignored_price_c:price_c"/> </document> </dataConfig>
第三种选择是使用/export端点或类似的CSV编写器,然后通过常规/update终结点将CSV文件直接导入到另一个节点。如果你有一个扁平的索引,CSV通常是最有效的交换格式。这将对数据进行实际的重新索引,并且可能不是您想要的。
/export
/update
1条答案
按热度按时间mzillmmw1#
如果服务器可以访问公共共享网络位置,则可以在生产节点上发出BACKUP命令,然后在测试节点上发出RESTORE命令:
如果没有网络驱动器,可以在本地创建备份,然后将其复制到另一个节点并在那里恢复。如果配置与您所说的相同,我会选择这条路线(它还将测试您是否能够进行备份和恢复)。
另一个选择是在DIH中使用SolrEntityProcessor-但DIH没有与9.x捆绑,因此如果您使用9.x,则必须自己安装社区项目。
第三种选择是使用
/export
端点或类似的CSV编写器,然后通过常规/update
终结点将CSV文件直接导入到另一个节点。如果你有一个扁平的索引,CSV通常是最有效的交换格式。这将对数据进行实际的重新索引,并且可能不是您想要的。