上一篇文章,我們談到如何刪除索引裡面的資料,因為你刪除 BLOB 中的資料其實索引不會同步,這時候我就好奇了如果我更改 BLOB 中的資料呢
是否索引裡的資料會跟著改變? 直接說結論 : 會

接下來,就是分享我測試的過程
1.更改資料,將 Id USER994 這筆資料中的 Memo 後面加上目前的時間字串
//Test for 994
private static void UpdateData(int num)
{
var dir = AppDomain.CurrentDomain.BaseDirectory + "temp" + Path.DirectorySeparatorChar;
Directory.CreateDirectory(dir);
var u = new User { Birth = new DateTime(2022, 1, 1).AddDays(1), Email = "user" + num + "@gmail.com", Id = "USER" + num, Num = num, Memo = "測試資料" + num+"-修改時間:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Name = "當麻測試" + num };
System.IO.File.WriteAllText(dir + "data" + num + ".json", Newtonsoft.Json.JsonConvert.SerializeObject(u));
var blobClient = new Azure.Storage.Blobs.BlobClient(ConnectionString, "test1000", "data/" + "data" + num + ".json");
blobClient.Upload(dir + "data" + num + ".json", true);
}
2.記得更改後要重新執行索引,如果不執行就是等待 Azure 您那邊設定的時間決定

執行索引後就會發現,看到有一筆資料改變
重新執行索引的 C# code:
private static void RunIndexer()
{
var indexer = new Azure.Search.Documents.Indexes.SearchIndexerClient(new Uri(SearchServiceEndPoint), new Azure.AzureKeyCredential(AdminApiKey));
//這是對 indexer 做重新建立
var res = indexer.RunIndexer("azureblob-indexer").Content.ToString();
Console.WriteLine("Rebuild Indexer Result:");
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(res));
}
3.之後印出來結果看一下,果然更改了

這一篇文章大概就是已測試跟分享心得為主,給之後有需要的人一個參考
reference:
https://stackoverflow.com/questions/28327003/how-to-remove-all-documents-in-index
https://stackoverflow.com/questions/54670922/azure-search-index-rebuild-strategy-using-c-sharp
https://docs.microsoft.com/zh-tw/azure/search/search-howto-reindex
https://docs.microsoft.com/zh-tw/azure/search/search-howto-create-indexers?tabs=portal