2012-08-13 44 views
1

如何同步Solr delta導入過程?多個線程運行增量導入。如果在導入期間再運行一次導入,則第二次運行將被忽略,數據將不會更新。如何同步Solr導入過程?

我的目的是等待第二個完成第一個delta導入。

Delta導入通過HTTP運行,所以我不知道如何檢查它何時完成。

用途:Solr的4.0,SolrJ

回答

3

您可以用URL http://host:port/solr/dataimport?command=status或輪詢dataimporthandler的狀態,即使沒有任何命令,因爲狀態是默認的。通過這種方式,您可以獲取有關數據導入過程的一些詳細信息,並可以瞭解它是否仍在進行中。看看available commands

+0

是的,這是個好主意。謝謝你的回答。但我有幾個更新sama索引的dataimport。所以我希望能在某種程度上鎖定。 Lucene創建了write.lock,但如何實現它我不知道。 – Tioma 2012-08-14 07:04:36

+0

我想你可以在更高層次上檢查。您應該爲每個索引只運行一個導入過程。這對你合理嗎?如果是的話,只需檢查覈心的數據導入狀態,如果它表示忙就意味着它正在運行。閒置時,您可以運行新的導入。 – javanna 2012-08-14 07:09:20

+0

但我有三個單獨的數據導入更新單個索引。所以要檢查一些導入是否正常,我必須發送三個請求到SOlr服務器。無論如何,我寧願檢查一次 – Tioma 2012-08-14 07:59:24

1

好像你可以做一些與此

http://wiki.apache.org/solr/DataImportHandler#EventListeners

如果你可以用它來維持「importInProgress」布爾標誌,你很可能延長或包裹在自己的數據導入處理程序類代碼並返回自己的自定義響應以指示系統繁忙。這樣你永遠不會有兩個進口處理。根據javanna對狀態進行投票聽起來像是會受到競爭條件的影響。

+0

但是,如果您發現EventListeners的文檔它說DataImportHandler的事件偵聽器此API是實驗性的,可能會發生變化 – 2012-08-21 09:51:39

+0

這有點令人失望。也許郵寄solr dev列表來看看他們認爲改變的可能性有多大。這些文檔警告有時是陳舊的。 – Gus 2012-08-21 15:51:53

+0

我在solr郵件鏈中得到以下回復....有多種選擇:1.在啓動增量導入過程的線程之間進行外部同步。目前還不清楚爲什麼你需要多個線程。 2.查看wiki.apache.org/solr/DataImportHandler以查看/ solr/dataimport?command = status中的數據導入狀態。3.增量導入到單獨的核心,合併和交換中。 – 2012-08-23 09:55:08