0

我在Azure Search中有一個索引讓我們稱爲Hotels。是否可以使用Azure搜索將相同索引推送(使用API​​)和Pull(使用索引器)數據?

我在Azure SQL中有一個酒店表,它具有與在Azure搜索中找到的酒店索引副本相同的架構。

我在創建/更新/刪除時將其從後端推送到Azure SQL表和Azure搜索。

在一個場景中,我的數據被推送到Azure SQL但未能推送到Azure搜索可以讓我的Azure SQL Hotels表爲索引器,這樣索引器就可以將數據同步到我的Azure搜索索引(酒店)沒有被推到我的後端?

回答

0

是的,你既可以混合推拉,也可以有多個定位到相同索引的拉式索引器。當部分數據位於一個數據源中,而另一部分數據位於另一個數據源中時,我們經常會看到這種情況,索引是它們收斂的地方,通過它們的密鑰進行協調。

您所描述的模式並不常見,但一般來說它應該可以工作。您必須考慮到您的寫入與索引器寫入衝突的情況,並確保您在寫入時所做的寫入最終獲勝。另外,如果沿着這條路徑走,請確保配置更改檢測(如果刪除行,則執行刪除檢測)策略,這樣我們就可以逐步從SQL索引,並且不會在每次運行時準備好所有內容。

如果您擔心丟失寫入,另一種方法是將所有寫入操作推入隊列,然後從隊列中拉入Azure搜索。這樣你就有了一個寫入流而不是兩個。

+0

感謝您的回答@pablo,您建議使用https://azure.microsoft.com/en-us/services/storage/queues/的隊列嗎?或者是他們的一些隊列Azure Search能夠從哪裏拉?這個隊列是否可以在.Net中配置,或者可以在Azure Portal中進行配置? –

+0

Azure存儲隊列簡單而有效。有更復雜的選項,如服務巴士,但我不認爲你需要它。 在Azure中沒有直接支持搜索。您可以使用連接到隊列的Azure功能並將內容推送到Azure搜索。它的價格低廉,你沒有資源來監控,因爲函數處理所有事情。如果太多考慮批處理文檔(例如,按隊列項目推送多個更改,而不是一個),則需要注意您推送的文檔數量。 –