我无法在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中获取源时,它仍然是空的,正如你可以看到的那样。
下面是我从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。任何想法是什么问题?
最后,我能够使用以下方法获得反序列化对象 var topHits = dailyBuckets.Select(z => z.TopHits("lastresult").Documents<Source>()).ToList();
对应于每个给定JSON响应的正确对象类。