上一篇文章( 使用 Azure.Search.Documents Azure Blob 搜尋中的 JSON 資料 -複製(修改)索引,索引子 ) 我們談到了對於如果您的資料要一直做索引,可以透過複製索引然後替換現在熱索引的方式來做到,不然製作索引都需要時間,對於要一直 always on service 的系統來說
會是個麻煩的挑戰,今天在補述兩個會製作熱索引後會用到的兩個技巧,不過程式碼也很簡單只是做個筆記,把這系列作個 ending.

1. 調整現在有的索引子的執行時間,在後台我們原本設定為 5 mins (目前最低可設定的 interval 時間) ,舊的 indexer 被你抽換後,你應該可以適度調整他的執行的 interval 拉長
或是將現在正在被搜尋中的 indexer 時間縮短,該案例是將原本 30mins interver 的 改成 5 mins.
///
/// Change "aureblob-indexer-new"
/// from 30 mins to 5 mins
///
private static void GetIndexAndChangeInterval() {
var indexerClient = new Azure.Search.Documents.Indexes.SearchIndexerClient(new Uri(SearchServiceEndPoint), new Azure.AzureKeyCredential(AdminApiKey));
//aureblob-indexer-new
var indexer = indexerClient.GetIndexer("aureblob-indexer-new");
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(indexer.Value.Schedule));
//改成五分鐘
indexer.Value.Schedule.Interval = new TimeSpan(0, 5, 0);
var res = indexerClient.CreateOrUpdateIndexer(indexer);
//這是對 indexer 做重新建立
Console.WriteLine("Update Result:");
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(res));
}
執行程式前:

執行程式後:

2.刪除 indexer ,可以將不要的 indexer 刪除,程式碼範例為刪除 aureblob-indexer-new ,因為我適用免費的tire ,只能有三個 indexer 所以我都會將不要的刪除白嫖一下 :P
private static void DeleteIndexer()
{
var indexerClient = new Azure.Search.Documents.Indexes.SearchIndexerClient(new Uri(SearchServiceEndPoint), new Azure.AzureKeyCredential(AdminApiKey));
var res = indexerClient.DeleteIndexer("aureblob-indexer-new");
Console.WriteLine("Delete Result:");
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(res));
}
這一系列大概就是這樣之後有遇到啥心得我再繼續寫吧,目前在實務上使用到的大概就是這樣..