2017-05-04 109 views
0

我使用的是SOLR 6.0.0,我使用數據導入處理程序來處理從MySQL到SOLR的索引。SOLR數據導入處理程序跳過或忽略請求

我有以下查詢在我的DB-數據-config.xml文件

<entity name="user" query="SELECT ID, A, B, C FROM `USER` U WHERE U.ID = '${dataimporter.request.id}' OR '' = '${dataimporter.request.id}'"> 
    <field column="A" name="A" .... 
    ....... 
</entity> 

基本上如果我通過了ID,它將只索引這個ID,否則將索引整個表。

現在問題是,

我有頻繁的插入更新。

在第一次插入之後,我發送請求到單個id/doc/row的索引,幾毫秒後記錄得到更新,所以我再次發送索引相同id的請求。現在看起來SOLR跳過第二個請求,因爲我可以看到兩個請求都去了,但更新後的數據不存在於SOLR中。

這種情況也發生在非唯一的項目上(不是相同的ID)。我同時請求兩個或三個數據導入,solr跳過/忽略第二個請求。

我以http方式提出要求,發送下面的查詢,

http://localhost:8983/solr/user/dataimport?command=full-import&verbose=false&clean=false&commit=true&optimize=false&core=user&id=1 

回答

0

如果DIH處理器正忙於一個請求,將忽略你發送給它任何額外要求。

所以,你必須檢查你的關於如何/何時調用DIH,一些想法,做法:

  • ,你說你有很高的編輯頻率,似乎並通過ID重新索引不是最好的東西,somethign時間基礎似乎更具可擴展性。你可以添加一個'lastUpdated'列(當這個行被創建/更新時通過觸發器填充),然後每X(1分鐘,5分鐘......任何你能負擔得起)調用reindex。如果忽略一個請求,則不會丟失數據,應該重新索引的行將在下一個運行的增量上重新索引。
  • ,如果你想保留根據你的ID的方法,你需要:\
    • 等到前面的DIH請求發送之前一個新
    • 允許一定的緩衝,你可以不斷加入IDS同時完成您等待
    • 允許多個ID在你二氫配置
相關問題