You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenSearch .Net Client中执行原生SQL查询

在OpenSearch .NET客户端中执行原生SQL查询

要在OpenSearch的.NET客户端中执行原生SQL查询,你需要直接调用OpenSearch SQL插件的_plugins/_sql端点(也就是你在DevTools中使用的端点)。因为OpenSearch的SQL功能依赖独立插件实现,和Elasticsearch原生SQL的端点路径、逻辑不同,所以无法直接复用Elasticsearch客户端的Sql.QueryAsync方法。

解决方案步骤:

  1. 安装官方OpenSearch .NET客户端
    先通过NuGet安装依赖包:

    Install-Package OpenSearch.Client
    Install-Package OpenSearch.Net
    
  2. 初始化OpenSearch客户端

    var connectionSettings = new ConnectionSettings(new Uri("http://your-opensearch-host:9200"))
        // 若集群需要身份验证,添加对应配置
        // .BasicAuthentication("username", "password")
        .DefaultIndex("bookmark_questions");
    
    var osClient = new OpenSearchClient(connectionSettings);
    
  3. 发送SQL查询请求
    通过客户端的LowLevel API直接向_plugins/_sql端点发送POST请求:

    // 定义目标SQL查询
    var sqlQuery = "SELECT * FROM bookmark_questions WHERE studentId = 5";
    
    // 构建请求体
    var requestBody = new
    {
        query = sqlQuery,
        format = "json" // 指定返回格式,可选,默认即为json
    };
    
    // 执行请求并获取响应
    var response = await osClient.LowLevel.DoRequestAsync<StringResponse>(
        HttpMethod.Post,
        "_plugins/_sql",
        body: requestBody
    );
    
    // 解析响应结果
    // 方式1:动态解析
    dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(response.Body);
    // 方式2:定义强类型类反序列化(推荐,保障类型安全)
    // var result = JsonConvert.DeserializeObject<YourCustomResultModel>(response.Body);
    

关键说明:

  • OpenSearch的SQL查询必须通过_plugins/_sql插件端点访问,这是插件专属路径,和Elasticsearch的_sql原生端点逻辑不同,因此Elasticsearch客户端的封装方法无法直接套用。
  • 确认你的OpenSearch集群已安装opensearch-sql插件(你能在DevTools中执行查询,说明插件已正常部署)。

内容的提问来源于stack exchange,提问作者Mahmudul Hasan Sayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:52:47