簡體   English   中英

Solr DataImportHandler增量導入

[英]Solr DataImportHandler delta import

我正在使用DataImportHandler在SOLR中為數據建立索引。 我使用完全導入來索引數據庫中大約10000種產品中的所有數據。現在我對增量導入用法感到困惑嗎? 它是按間隔對添加到數據庫中的新數據編制索引嗎?我的意思是它將對大約10行中添加到我的表中的新數據編制索引,或者只是更新已編制索引的數據中的更改。

誰能盡快以簡單的例子向我解釋。

DataImportHandler可能有點令人生畏。 您的初始查詢已加載10.000個獨特產品。 如果指定/ dataimport?command = full-import,則會加載該文件。 完成此導入后,DIH將存儲一個變量({dataimporter.last_index_time}),該變量是您進行此導入的最后日期/時間。

為了進行更新,您可以指定一個deltaQuery。 deltaQuery用於標識自上次更新以來數據庫中已更改的記錄。 因此,您指定這樣的查詢:從某個表中選擇product_id [date_update]> ='$ {dataimporter.last_index_time}'這將從您的數據庫中檢索自上次完整更新以來已更新的所有product_id。 您需要指定的下一個查詢(deltaImportQuery)是將檢索上一步中每個product_id的完整記錄的查詢。

假設product_id是您的唯一鍵,那么solr將確定它需要更新現有記錄,或者如果product_id不起作用,則添加一個記錄。

為了執行deltaQuery和deltaImportQuery,您可以使用/ dataimport?command = delta-import

這是所有可能性的極大簡化,請查看DataImportHandler上的Solr Wiki,它是一個非常強大的工具!

另一個注意事項:

當您在較小的時間窗口(例如幾秒鍾內幾次)上使用增量導入並且數據庫服務器位於除solr index服務之外的另一台機器上時,請確保兩台機器的systemtime時間都匹配,因為時間戳記在數據庫服務器上生成[date_update] ,在另一個上生成dataimporter.last_index_time

否則,您將不會根據時差更新索引(或過多)。

我同意數據導入處理程序可以處理這種情況。 DIH的一個重要限制是它不對請求進行排隊。 這樣的結果是,如果DIH為“忙”索引,它將忽略所有將來的DIH請求,直到再次成為“空閑”為止。 跳過的DIH請求將丟失並且不會執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM