2010-03-23 111 views
12

Solr 1.4企業級搜索服務器建議在覈心副本上進行大量更新,然後將其交換到主核心。我下面這些步驟:如何使用現有數據創建solr內核?

  1. 創建準備的核心:http://localhost:8983/solr/admin/cores?action=CREATE&name=prep&instanceDir=main
  2. 執行索引更新,然後提交/優化上準備的核心。
  3. 交換主要和準備的核心:http://localhost:8983/solr/admin/cores?action=SWAP&core=main&other=prep
  4. 卸載準備內核:http://localhost:8983/solr/admin/cores?action=UNLOAD&core=prep

我遇到的問題是,在步驟1中創建的核心不具有任何數據。如果我要對所有內容和廚房水槽進行完整索引,那就沒有問題了,但如果我只是想更新文檔的(大)子集 - 那顯然不起作用。

(我能合併的核心,但我想要做的就是擺脫任何刪除的文件,而不試圖使它們的列表一部分。)

有一些標誌來創建操作我錯過了?細節上,​​有點稀疏。

可能的解決方案:複製

有人建議使用solr-user進行復制。在這種情況下使用它會(我的理解)需要以下步驟:

  1. 創建一個新的PREP核心基於關閉主核心的配置
  2. 改變主核心的配置成爲主
  3. 更改PREP內核的配置爲從屬
  4. 原因/等待同步?
  5. 將PREP內核的配置更改爲不再是從設備
  6. 執行索引更新,然後在PREP內核上執行/優化。
  7. 交換PREP和主芯子

一個簡單的基於複製的設置將配置一個永久PREP核心,始終是主人。 MAIN核心(在需要的任意數量的服務器上)然後可以是PREP核心的從屬設備。索引可能會在PREP核心上發生,儘可能快或必要時緩慢。

可能的解決方案:永久PREP核心和雙更新

另一個想法我想出了是這樣的(也包括永久PREP核心):

  1. 執行索引更新,然後提交/優化上PREP核心。
  2. 交換PREP和MAIN核心。
  3. 重新執行索引更新,然後提交/優化現在的PREP內核。它現在與MAIN核心(理論上)具有相同的數據,並且將在下一次索引操作中準備好。
+0

我認爲程序是用於重建索引的一切。你用什麼來索引? DIH還是自定義進程? –

+0

自定義進程。 – stannius

+0

您是否嘗試過更新相同內核上的文檔?它真的表現如此糟糕嗎? –

回答

3

我創建了這個克隆操作的想法,它執行索引和配置數據的文件系統副本,然後創建一個新的。有一些鎖定問題,你必須有索引的文件系統訪問權限,但它確實有效。這確實給你一個很好的副本,你可以使用配置文件。

我越去想它,你可以創建一個新的核心,然後做到這一點:

奴隸強制fetchindex從主命令:http://slave_host:port/solr/replication?command=fetchindex 它可以通過對額外的屬性「masterUrl」或其他屬性(如「壓縮」)(或標記中指定的任何其他參數)從主服務器進行一次性複製。這消除了對從設備中的主設備進行硬編碼的需要。

和填充從生產一個新的一個,然後應用您的更新,然後交換回來了!