花了好幾天測試關於 Azure Cognitive Search(Azure Search) 做測試,大概理解,這是幹嘛的,之後有機會也有幫助在實戰上面可以應用,所以分幾篇講解一下
這一篇主要目的,是在於建立 Aazure Search for Blob JSON Data 的建置。

1. 首先你要先建立一個 認知搜尋,這邊我建立名稱叫做 dblog-test

2.我們建立一個 dbloglog 的儲存體,透過 C# 我上傳 1000 JSON 檔案上去,並且放在 test1000 的檔案夾中。
public static readonly string ConnectionString = "";
private static void Init1000Data()
{
var dir = AppDomain.CurrentDomain.BaseDirectory + "temp" + Path.DirectorySeparatorChar;
Directory.CreateDirectory(dir);
for (var i = 1; i <= 1000; i++)
{
var u = new User { Birth = new DateTime(2022, 1, 1).AddDays(1), Email = "user" + i + "@gmail.com", Id = "USER" + i, Num = i, Memo = "測試資料" + i, Name = "當麻測試" + i };
System.IO.File.WriteAllText(dir + "data" + i + ".json", Newtonsoft.Json.JsonConvert.SerializeObject(u));
var blobClient = new Azure.Storage.Blobs.BlobClient(ConnectionString, "test1000", "data/" + "data" + i + ".json");
blobClient.Upload(dir + "data" + i + ".json",true);
}
Console.WriteLine("SUCCESS");
}
public class User
{
[Azure.Search.Documents.Indexes.SimpleField(IsKey = true, IsFilterable = true)]
public string? Id { get; set; }
[Azure.Search.Documents.Indexes.SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
public string? Name { get; set; }
[Azure.Search.Documents.Indexes.SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
public string? Email { get; set; }
[Azure.Search.Documents.Indexes.SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
public DateTime? Birth { get; set; }
[Azure.Search.Documents.Indexes.SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
public string? Mobile { get; set; }
[Azure.Search.Documents.Indexes.SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
public string Memo { get; set; }
[Azure.Search.Documents.Indexes.SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
public int? Num { get; set; }
}
3. 之後 打開打算 被搜尋的 儲存體目標 這邊 儲存體名稱是 dblogblog
選擇左邊的 Azure 搜尋服務,你就會看到第一步建立的 dblod-test
再來就是下一步關於連線資料
這裡面資料來源,我設定名稱為 blob-datasource ,因為我資料內容是 JSON 這邊一定要設定 JSON 這很重要,容器名稱就是 test1000
來自於步驟2
下一個,不用設置直接下一步

之後設定目標,這邊目前我就是全部勾選,請注意如果你之前資料格式沒有選JSON 你不會看到你設計的模型欄位是展開的
名稱我設定為 azureblob-index ,並且 索引鍵設定為 Id ,因為我設計的資料模型 Id 就是索引子
這一步很重,之後我們要索引中的該資料,這很重要。
之後下一步設定索引子,這邊我名稱,設定成 azureblob-indexer ,並且下面有一個進階設定,我是把 Base-64
編碼金鑰關閉,預設是打開的,時間我設定五分鐘一次
最頻繁就是五分鐘
建立好後你回到 Azure Search 中 得dblog-test (步驟1) ,你會看到 索引部分有 azureblob-index ,索引子有 azureblob-indexer,資料來源有 blob-datasource
這樣環境,就建立好了,之後我們就是要用 C# 來查詢索引中的資料,建立環境很重要,為了測試到我要的效果,這些動作我都不知道重作幾次了,這邊我都有用顏色標註
讓您比較不容易被搞混。