无法从顶级点击率聚合中获取对象。

问题描述 投票:0回答:1

我无法在NEST中从top_hits聚合中获取响应对象。

var searchRespJson = node.SearchForDataBool<JObject>(sourceOptions);
var dailyBuckets = searchRespJson.Aggregations.DateHistogram("daily").Buckets;
var topHits = dailyBuckets.Select(z => z.TopHits("lastresult").Hits<ObjExample>()).ToList();

当我想从topHits中获取源时,它仍然是空的,正如你可以看到的那样。Screenshot from debugging

下面是我从ES中得到的响应,就像上面的截图一样。

{
  "took": 14,
  "timed_out": false,
  "_shards": {
    "total": 95,
    "successful": 95,
    "failed": 0
  },
  "hits": {
    "total": 5,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "daily": {
      "buckets": [
        {
          "key_as_string": "2020-05-01T00:00:00.000Z",
          "key": 1588291200000,
          "doc_count": 4,
          "lastresult": {
            "hits": {
              "total": 4,
              "max_score": null,
              "hits": [
                {
                  "_index": "qa-reporting-2020-05",
                  "_type": "qa-reporting",
                  "_id": "49604317731477703817213013055855948409579155497894805506.0",
                  "_score": null,
                  "_source": {
                    "MetaData": {
                      "TestStatusStr": "Passed"
                    }
                  },
                  "sort": [
                    1588365938425
                  ]
                }
              ]
            }
          }
        }
      ]
    }
  }
}

这是我的ObjExample:

public class MetaData
    {
        public string TestStatusStr { get; set; }
    }

    public class Source
    {
        public MetaData MetaData { get; set; }
    }

    public class Hit
    {
        public string _index { get; set; }
        public string _type { get; set; }
        public string _id { get; set; }
        public object _score { get; set; }
        public Source _source { get; set; }
        public IList<long> sort { get; set; }
    }

    public class ObjExample
    {
        public IList<Hit> hits { get; set; }
    }

我想用NEST来获取Source-MetaData-TestStatusStr。任何想法是什么问题?

c# elasticsearch json.net nest
1个回答
0
投票

最后,我能够使用以下方法获得反序列化对象 var topHits = dailyBuckets.Select(z => z.TopHits("lastresult").Documents<Source>()).ToList(); 对应于每个给定JSON响应的正确对象类。

© www.soinside.com 2019 - 2024. All rights reserved.