在聚合助手 ElasticSearch 上使用过滤器时出现空异常

Null exception when using filter on aggregation helper ElasticSearch

我创建了一个 AggregationsHelper 对象并在其上调用了 .Filter 方法

 var aggr = new AggregationsHelper();
 aggr .Filter("test");

调用 .Filter 函数时出现空异常。我必须以某种方式启动对象吗?

编辑:

正如@Val 所指出的,我必须通过构造函数将字典传递给对象

我真正的问题是如何模拟这种复杂的 ElasticSearch 聚合查询:

    var res = ElasticClient.Search<DataRecord>(s => s
            .SearchType(SearchType.Count)
            .Aggregations(a => a.Filter(
                "histIdFilter",
                f => f.Filter(
                    f2 => f2.Term(
                        t => t.HistoryId,
                        groupId))
            .Aggregations(ag => ag.Filter("timeRangeFilter", fg => fg.Filter(fg2 => fg2.Range(i => i.OnField(b => b.DateTime))))))));

    // Applying filter
    var ah = res.Aggs;
    var histIdAgg = ah.Filter("histIdFilter");
    var timeRangeAgg = histIdAgg.Filter("timeRangeFilter");

我成功模拟了查询响应的 .Aggr 属性,使用

datResp.SetupGet(x => x.Aggs).Returns(ah.Object);

但是当我在 ah 对象上调用 .Filter 时,我得到一个空异常,就像由于某种原因没有设置内部字典一样

这是因为在不传递字典的情况下创建AggregationsHelper时,你会得到一个空指针异常on this line。试试这样:

var temp = new Dictionary<string, IAggregation>();
var aggr = new AggregationsHelper(temp);
aggr.Filter("test");