[英]Creating collections in SOLR
在網上搜索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的索引目錄嗎?
您可以使用多個核心。 每個核心都是一個單獨的lucene索引。
instanceDir
是該特定核心的配置文件的位置,該文件夾包含conf
目錄,其中包含schema.xml
和solrconfig.xml
等。 每個核心通常都有一個子文件夾,其中solr.xml
是(SOLR_HOME),並使用相對路徑在solr.xml
本身中引用它們。
除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);
}
幸運的是,現在有一個標准選項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的更完整的區別引用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.