配置環境變數
配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
重要
阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運,具體操作,請參見建立RAM使用者。
建立AccessKey ID和AccessKey Secret,請參考建立AccessKey。
如果您使用的是RAM使用者的AccessKey,請確保主帳號已授權AliyunServiceRoleForOpenSearch服務關聯角色,請參考OpenSearch-行業演算法版服務關聯角色,相關文檔參考訪問鑒權規則。
請不要將AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
Linux和macOS系統配置方法:
執行以下命令,其中,
<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系統配置方法
建立環境變數檔案,添加環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,並寫入已準備好的AccessKey ID和AccessKey Secret。
重啟Windows系統生效。
安裝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 ConsoleApp2
{
internal class Program
{
public static Dictionary<string, object> docBulk(Client opensearchClient, string appName,
string tableName, List<object> docContent, Dictionary<string, string> header, RuntimeOptions runTime)
{
string pathName = "/v3/openapi/apps/" + appName + "/" + tableName + "/actions/bulk";
try
{
return opensearchClient._request("POST", pathName, null, header, docContent, runTime);
}
catch (Exception 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
{
// 配置統一的請求入口, 此資訊可從業務控制台擷取.
Endpoint = "opensearch-cn-hangzhou.aliyuncs.com",
// 支援 protocol 配置 HTTPS/HTTP
Protocol = "HTTPS",
/* 使用者識別資訊
從環境變數讀取配置的AccessKey ID和AccessKey Secret,
運行程式碼範例前必須先配置環境變數,參考文檔上面“配置環境變數”步驟 */
AccessKeyId = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
AccessKeySecret = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
// 支援 type 配置 sts/access_key 鑒權. 其中 type 預設為 access_key 鑒權. 使用 sts 可配置 RAM-STS 鑒權.
// 備選參數為:sts 或者 access_key
Type = "access_key",
// 如果使用 RAM-STS 鑒權, 請配置 security_token, 可使用阿里雲 AssumeRole 擷取相關 STS 鑒權結構.
SecurityToken = "",
};
// 建立 opensearch client 執行個體
var openSearch = new Client(config);
// 要搜尋的appName.
var appName = "appName";
// 推送的目標表.
var tableName = "tableName";
// 自訂HttpHeaders .
var header = new Dictionary<string, string>();
// 文檔結構構造.
// timestamp 資訊用以增加對文檔操作的保序能力. 系統會用該時間戳記來作為同一主鍵文檔更新順序的判斷標準.
// 在沒有該timestamp項時,預設以文檔發送到OpenSearch的時間作為文檔更新時間進行操作。
List<object> documents = new List<object>();
Dictionary<string, object> document = new Dictionary<string, object>();
Dictionary<string, object> document1 = new Dictionary<string, object>();
Dictionary<string, object> fields = new Dictionary<string, object>();
fields.Add("id", DateTime.Now.Millisecond);
fields.Add("text", DateTime.Now.Millisecond);
fields.Add("title", DateTime.Now.Millisecond);
fields.Add("cate", DateTime.Now.Millisecond);
document.Add("cmd", "ADD");
document.Add("fields", fields);
document1.Add("cmd", "ADD");
document1.Add("timestamp", DateTime.Now.Second);
document1.Add("fields", fields);
documents.Add(document);
documents.Add(document1);
try
{
docBulk(openSearch, appName, tableName, documents, header, runtime);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}說明
參考:資料處理