在这里阅读Can a raw Lucene index be loaded by Solr? Lucene索引可以导入到Solr中。当Solr服务器未运行时(在数据文件夹中使用所有需要的配置文件创建Solr核心文件夹结构),这很有效,但是当Solr服务器启动并运行时它不起作用。
是否有任何呼叫(通过休息端点或java api)告诉Solr重新扫描数据文件夹?
答案 0 :(得分:2)
您希望使用lucene(outsite solr)生成索引并将其插入solr而不重新启动。
您不能直接更改索引文件夹。但是你可以create一个新核心指向已经构建的索引文件夹,switch/swap核心指向(过时的)旧文件夹。或者您可以merge旧核心中的新索引文件夹。
所有这一切都可以通过solrj admin api完成。
e.g。创建:
CoreAdminRequest.Create req = new CoreAdminRequest.Create();
req.setConfigName(configName);
req.setSchemaName(schemaName);
req.setDataDir(dataDir);
req.setCoreName(coreName);
req.setInstanceDir(instanceDir);
req.setIsTransient(true);
req.setIsLoadOnStartup(false); // <= unless its productive core.
return req.process(adminServer);
e.g。交换:
CoreAdminRequest request = new CoreAdminRequest();
request.setAction(CoreAdminAction.SWAP);
request.setCoreName(coreName1);
request.setOtherCoreName(coreName2);
request.process(solrClient);
对于SolrCloud,使用collections api的第一个“创建”方法,并使用别名而不是交换。
e.g。别名:
CollectionAdminRequest.CreateAlias req = new CollectionAdminRequest.CreateAlias();
req.setAliasedCollections(coreName);
req.setAliasName(aliasName);
return req.process(solrClient);