如何获取 Elasticsearch NEST 响应的聚合类属性



运行以下命令时:

searchResponse = _elasticClient.Search<Assets>(s => s
                .Aggregations(a => a
                    .Filter("myFilter", f => f
                        .Filter(fi => fi
                            .Bool(b => b
                                .Must(
                                    m => m.Term(t => t.TitleType, type),
                                    m => m.Term(t => t.Categories, category))))
                        .Aggregations(aggs => aggs
                            .Terms("myUnique", te => te
                                .Field(f1 => f1.Genres))))));

我得到这个作为回应:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 50751,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "myFilter" : {
      "doc_count" : 50281,
      "myUnique" : {
        "doc_count_error_upper_bound" : 0,
        "sum_other_doc_count" : 0,
        "buckets" : [
          {
            "key" : "Other",
            "doc_count" : 9879
          },
          {
            "key" : "Anime",
            "doc_count" : 5948
          },
          {
            "key" : "Reality",
            "doc_count" : 4354
          },
          {
            "key" : "Drama",
            "doc_count" : 3333
          }
        ]
      }
    }
  }
}

这正是我想要的。但是,我不知道如何访问响应中的类属性。我认为这样的事情会起作用:

agg = searchResponse.Aggregations.Terms("myFilter.myUnique"); // Does not work!

我想获得在上面找到的汇总响应中找到的所有"键",例如戏剧、现实等。

我的目标是在上面的行之后运行它:

foreach (var genre in agg.Buckets)
                {
                    var value = genre.Key;
                    var count = genre.DocCount;
                    DoSomething(value, count);
                }

我确信有一种方法,但在网上找不到任何示例。有没有人做过类似的事情?

我完全错过了文档中的几行重要行:

var filterAgg = searchResponse.Aggregations.Filter("myFilter");
var terms = filterAgg.Terms("myUnique");

然后我可以做:

foreach (var genre in terms.Buckets)
{
    var value = genre.Key;
    var count = genre.DocCount;
    DoSomething(value, count);
}

最新更新