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 Portal
Azure Search
金鑰
主要管理金鑰
或是 次要管理金鑰
查詢金鑰
查詢金鑰
,符合 最低權限準則
SearchIndexClient
Azure Search Index
Microsoft.Azure.Search
Install-Package Microsoft.Azure.Search
Microsoft.Azure.Search
及 Microsoft.Azure.Search.Models
query 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 大致上沒什麼落差,操作上相當便利.