本文为您介绍了使用C#SDK进行文档搜索时所需要的环境变量配置与Package依赖安装,并提供了相关示例代码。
配置环境变量
配置环境变量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 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
            {
                // 配置统一的请求入口, 此信息可从业务控制台获取.
                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";
            // 自定义HttpHeaders .
            var header = new Dictionary<string, string>();
            // query请求结构.
            // config子句中的format参数目前暂时只支持配置为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;
            }
        }
    }
}说明 
参考:搜索处理
该文章对您有帮助吗?