Solr:在服务器启动时导入 Lucene 索引 运行

Solr: import Lucene index while server is up and running

如此处所述Can a raw Lucene index be loaded by Solr? Lucene 索引可以导入到 Solr 中。当 Solr 服务器不是 运行(在数据文件夹中创建一个包含所有需要的配置文件的 Solr 核心文件夹结构)时,这很有效,但当 Solr 服务器启动且 运行 时,它不起作用。

是否有任何调用(通过 rest 端点或 java api)告诉 Solr 重新扫描数据文件夹?

您想使用 lucene(outsite solr)生成索引并将其插入到 solr 而无需重新启动。

您不能直接更改索引文件夹。但是你可以create a new core which point to the already build index folder and switch/swap the core with the (outdated) old one. Or you can merge旧核心中的新索引文件夹。

这一切都可以由 solrj admin api 完成。

例如创建:

    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);

例如交换:

    CoreAdminRequest request = new CoreAdminRequest();
    request.setAction(CoreAdminAction.SWAP);
    request.setCoreName(coreName1);
    request.setOtherCoreName(coreName2);
    request.process(solrClient);

对于 SolrCloud,使用第一种 "create" 方法和 collections api 并使用别名而不是交换。

例如别名:

    CollectionAdminRequest.CreateAlias req = new CollectionAdminRequest.CreateAlias();
    req.setAliasedCollections(coreName);
    req.setAliasName(aliasName);
    return req.process(solrClient);