Azure Search - Part 8 ( 使用 .NET SDK 查詢 Azure Search Index)在完成前置作業(1. 申請 Azure Search  2. 建立 Azure Search Index 2. 建立 index 資料)後,終於可以開始實際使用,查詢方式目前有三個:1. Azure Portal 2. .NET SDK 3.REST API,今天就直接來看 .NET SDK 如何使用.
Azure Search Service Key
| key Type | 備註 | 用途說明 | 
|---|---|---|
| admin keys(系統管理金鑰) | 主要/次要 | 管理服務、建立/刪除 Index、索引子、資料來源;主要/次要用途相同 | 
| query keys(查詢金鑰) | - | 提供 client 端用來讀取 index 與 document | 
Azure PortalAzure Search金鑰主要管理金鑰 或是 次要管理金鑰查詢金鑰查詢金鑰,符合 最低權限準則
SearchIndexClientAzure Search Index
Microsoft.Azure.SearchInstall-Package Microsoft.Azure.Search
Microsoft.Azure.Search 及 Microsoft.Azure.Search.Modelsquery key 較安全string searchServiceName = "SearchServiceName";//填 AzureServiceName
string queryApiKey = "SearchServiceQueryApiKey";//填 query key
SearchIndexClient indexClient = new SearchIndexClient(searchServiceName, "hotels", new SearchCredentials(queryApiKey));
Documents.Search
search
Searchable 的欄位搜尋 一或多個 字詞searchText 來傳參數search 時 searchText 使用 *(實際測試:"" 有相同效果)filter
Filterable 欄位做比對SearchParameters 的 Filter 來傳參數filter 時,Filter 不要設定 或是 不要傳入 SearchParameters
針對 Searchable 欄位內容 search "budget" 取得 "hotelName" 欄位內容
SearchParameters parameters;// filter 用
DocumentSearchResult<Hotel> results;
parameters =
    new SearchParameters()
    {
        Select = new[] { "hotelName" }
    };//僅取得 "hotelName"
results = indexClient.Documents.Search<Hotel>("budget", parameters);//在 "Searchable" 的欄位中 search "budget"
filter "baseRate" 欄位 小於 150 ,取得 "hotelId", "description" 欄位內容,不 search(* 表不指定條件 search)
SearchParameters parameters;// filter 用
DocumentSearchResult<Hotel> results;
parameters =
    new SearchParameters()
    {
        Filter = "baseRate lt 150",// baseRate 小於 150
        Select = new[] { "hotelId", "description" }//取回 "hotelId", "description"
    };
results = indexClient.Documents.Search<Hotel>("*", parameters);// 不需要 search
filter 以 "lastRenovationDate" 欄位遞減排序,取回 "hotelName", "lastRenovationDate" 欄位內容,只取前兩筆,不 search(* 表不指定條件 search)
SearchParameters parameters;// filter 用
DocumentSearchResult<Hotel> results;
parameters =
new SearchParameters()
{
    OrderBy = new[] { "lastRenovationDate desc" },//以 lastRenovationDate 遞減排序
    Select = new[] { "hotelName", "lastRenovationDate" },// 取回 "hotelName", "lastRenovationDate"
    Top = 2//只取前 2 筆
};
results = indexClient.Documents.Search<Hotel>("*", parameters);//不需要 search
不用 filter,只針對 Searchable 欄位內容 search "motel"
SearchParameters parameters;// filter 用
DocumentSearchResult<Hotel> results;
parameters = new SearchParameters();//不用 filter
results = indexClient.Documents.Search<Hotel>("motel", parameters);// search "motel"
經過前面的查詢基本介紹後,觀念套到 .NET SDK 大致上沒什麼落差,操作上相當便利.