NEST:从 ElasticSearch 中的搜索响应 (ISearchResponse) 获取数据时出现问题

NEST : Issue in getting data from search response (ISearchResponse) in ElasticSearch

我使用 NEST 编写了一个 C# 代码,它对我的​​ ES 数据库进行搜索查询。我可以看到这些查询成功并通过 Postman 给出 json 响应正文。我想在我的代码中使用这些响应。例如,

ISearchResponse<class> myquery = client.Search<class>(...) (一些成功的 api 调用)

响应正文类似于:

{
  "took": 5,
  ...
  ...
  "hits": {
    "max_score": 1.2,
    "hits": [
      {
        "_index": "sample",
        ...
        "_source": {
          "name": "generic name",
          "profession": "lawyer",
          ...
        }
      }
    ]
  }
    "aggs" : {
       ...
    }
}

我可以通过 myquery.Took 获得这里的 "took" 值。同样,我可以看到 ISearchResponse<> 的定义包含 MaxScoreTimedOut

的数据成员

我的问题是,如果我想获取 name 字段或 aggr 中的某个存储桶的值,以同样的方式在我的代码中使用。我怎样才能做到这一点?请帮助。

注意: 文档只解释了如何处理错误响应,我可以在调试器中看到 .Documents 可能以某种方式存储它,但我无法检索数据(或者我可能不明白如何检索)。因此,如果是这种情况,还请说明如何从 .Documents 获取它。

每个命中的 "_source" JSON 对象将被反序列化为类型 T,指定为 Search<T> 上的泛型类型参数。在您的示例中,"_source" 将被反序列化为 class,因此只需为 "_source" 上的属性定义 class 上的属性。例如

public class MyDocument 
{
    [PropertyName(Name = "name")]
    public string Name {get;set;}

    [PropertyName(Name = "profession")]
    public string Profession {get;set;}
}

var response = client.Search<MyDocument>();