【问题标题】:Solr: import Lucene index while server is up and runningSolr:在服务器启动并运行时导入 Lucene 索引
【发布时间】:2016-05-27 21:01:38
【问题描述】:

阅读这里Can a raw Lucene index be loaded by Solr? Lucene 索引可以导入到 Solr。这在 Solr 服务器未运行时效果很好(在数据文件夹中创建具有所有需要的配置文件的 Solr 核心文件夹结构),但在 Solr 服务器启动并运行时它不起作用。

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

【问题讨论】:

    标签: indexing solr lucene solrj


    【解决方案1】:

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

    您不得直接更改索引文件夹。但是您可以create 一个指向已构建索引文件夹的新核心和switch/swap 带有(过时的)旧核心的核心。或者你可以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,使用带有 collections api 的第一个“创建”方法,并使用别名而不是交换。

    例如别名:

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

    【讨论】:

    • 感谢您的提示。我想通过 solrj admin api 使用交换解决方案,但我没有看到任何方法。
    猜你喜欢
    • 2011-02-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多