在网上搜索SOLR中的集合时,我只找到有关分布式搜索的信息等等,但是当我理解correclty集合的概念在同一服务器实例上运行时使用相同的模式但在逻辑上完全分开。它是否正确? 所以我可以有3个集合,搜索一个集合不会输出另一个集合的结果吗?是否可能一次搜索多个集合?
但我的主要优先事项是:如何创建第二个系列?即使是与优秀文档的链接也会受到赞赏。 在我的solr.xml中我有
<cores adminPath="/admin/cores" defaultCoreName="web-collection" host="${host:}" hostPort="${jetty.port:}">
<core name="web-collection" instanceDir="." />
</cores>
创建第二个核心条目并设置不同的路径是否足够?像...
<cores adminPath="/admin/cores" defaultCoreName="web-collection" host="${host:}" hostPort="${jetty.port:}">
<core name="web-collection" instanceDir="web" />
<core name="test-collection" instanceDir="test" />
</cores>
instanceDir是关于什么的?它是相对于SOLR-Home的索引目录吗?
答案 0 :(得分:6)
您可以使用多个核心。每个核心都是一个独立的lucene指数
instanceDir
是该特定核心的配置文件的位置,该文件夹包含conf
目录,其中包含schema.xml
和solrconfig.xml
等。您通常在每个核心的子文件夹中solr.xml
是(SOLR_HOME),并使用相对路径在solr.xml
本身内引用它们。
答案 1 :(得分:2)
答案 2 :(得分:2)
除了REST API,您还可以使用SolrJ创建新核心。在努力创造自己之后,这就是我最终做的事情:
SolrServer aServer = new HttpSolrServer("http://127.0.0.1:8983/solr");
CoreAdminResponse aResponse = CoreAdminRequest.getStatus(collectionName, aServer);
if (aResponse.getCoreStatus(aNewInstance.getCollection()).size() < 1)
{
CoreAdminRequest.Create aCreateRequest = new CoreAdminRequest.Create();
aCreateRequest.setCoreName(collectionName);
aCreateRequest.setInstanceDir(collectionName);
aCreateRequest.process(aServer);
}
答案 3 :(得分:0)
幸运的是,现在有一个脚本create
的标准选项bin/solr
能够检测Solr在哪种模式下运行(独立或SolrCloud),然后采取适当的措施(创建一个核心或创建一个集合)。
$ bin/solr create -help
Usage: solr create [-c name] [-d confdir] [-n configName] [-shards #] [-replicationFactor #] [-p port]
例如,假设您在端口8983
上运行最新版本的Solr,请创建一个刚刚运行的新核心:
bin/solr create -c collection1 -d /path/to/solr/conf
必须对集合和核心之间有时发生的混淆进行重要区分。从客户端的角度来看,没有区别,因此创建核心或集合取决于Solr是以独立(核心)还是SolrCloud模式(集合)运行。
要获得更完整的区分引用Solr Collection vs Cores