搜索Demo
配置環(huán)境變量
配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,具體操作,請(qǐng)參見創(chuàng)建RAM用戶。
創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考創(chuàng)建AccessKey。
如果您使用的是RAM用戶的AccessKey,請(qǐng)確保主賬號(hào)已授權(quán)AliyunServiceRoleForOpenSearch服務(wù)關(guān)聯(lián)角色,請(qǐng)參考OpenSearch-行業(yè)算法版服務(wù)關(guān)聯(lián)角色,相關(guān)文檔參考訪問鑒權(quán)規(guī)則。
請(qǐng)不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。
Linux和macOS系統(tǒng)配置方法:
執(zhí)行以下命令,其中,
<access_key_id>
需替換為您RAM用戶的AccessKey ID,<access_key_secret>
替換為您RAM用戶的AccessKey Secret。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
Windows系統(tǒng)配置方法
新建環(huán)境變量文件,添加環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。
重啟Windows系統(tǒng)生效。
安裝Package 依賴
Package 依賴地址: https://www.nuget.org/packages
dotnet add package AlibabaCloud.TeaUtil --version 0.1.5
dotnet add package AlibabaCloud.OpenSearchUtil --version 1.0.2
dotnet add package Aliyun.Credentials --version 1.2.1
dotnet add package Tea --version 0.4.0
示例代碼
以下是C# SDK 搜索的示例代碼:
using System;
using System.Collections.Generic;
using AlibabaCloud.TeaUtil.Models;
using Tea;
namespace ConsoleApp
{
internal class Program
{
public static Dictionary<string, object> searchDoc(Client opensearchClient, string appName,
Dictionary<string, object> queryParams, Dictionary<string, string> header, RuntimeOptions runTime)
{
string pathName = "/v3/openapi/apps/" + appName + "/search";
try
{
return opensearchClient._request("GET", pathName, queryParams, header, null, runTime);
}
catch (TeaException e)
{
Console.WriteLine(e);
throw;
}
}
private static void Main(string[] args)
{
var runtime = new RuntimeOptions
{
ConnectTimeout = 5000,
ReadTimeout = 10000,
MaxAttempts = 0,
Autoretry = false,
IgnoreSSL = false,
MaxIdleConns = 50
};
var config = new Config
{
// 配置統(tǒng)一的請(qǐng)求入口, 此信息可從業(yè)務(wù)控制臺(tái)獲取.
Endpoint = "opensearch-cn-hangzhou.aliyuncs.com",
// 支持 protocol 配置 HTTPS/HTTP
Protocol = "HTTPS",
// 用戶識(shí)別信息
// 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret,
// 運(yùn)行代碼示例前必須先配置環(huán)境變量,參考文檔上面“配置環(huán)境變量”步驟
AccessKeyId = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
AccessKeySecret = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
// 支持 type 配置 sts/access_key 鑒權(quán). 其中 type 默認(rèn)為 access_key 鑒權(quán). 使用 sts 可配置 RAM-STS 鑒權(quán).
// 備選參數(shù)為: sts 或者 access_key
Type = "access_key",
// 如果使用 RAM-STS 鑒權(quán), 請(qǐng)配置 security_token, 可使用阿里云 AssumeRole 獲取 相關(guān) STS 鑒權(quán)結(jié)構(gòu).
SecurityToken = "",
};
// 創(chuàng)建 opensearch client 實(shí)例
var openSearch = new Client(config);
// 要搜索的appName.
var appName = "appName";
// 自定義HttpHeaders .
var header = new Dictionary<string, string>();
// query請(qǐng)求結(jié)構(gòu).
// config子句中的format參數(shù)目前暫時(shí)只支持配置為json/fulljson
var docQuery = new Dictionary<string, object>
{
{
"query",
"config=start:0,hit:10,format:fulljson&&query=(default:\"Search\" AND default:\"開放搜索\") OR (default:\"搜索引擎\" AND default:\"策略\")"
},
{"second_rank_name", "att"}, {"first_rank_name", "sdfrsdfs"}, {"fetch", "qp:profile"},
{"fetch_fields", "title"}
};
try
{
Dictionary<string, object> ops = searchDoc(openSearch, appName, docQuery, header, runtime);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}
參考:搜索處理