在聚合帮助程序ElasticSearch上使用筛选器时出现Null异常

本文关键字:异常 Null 筛选 帮助程序 ElasticSearch | 更新日期: 2023-09-27 18:25:15

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

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

调用.Filter函数时,我得到一个null异常。我必须以某种方式启动对象吗?

编辑:

正如@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时,我会得到一个null异常,比如由于某种原因没有设置内部字典

在聚合帮助程序ElasticSearch上使用筛选器时出现Null异常

这是因为当在不传递字典的情况下创建AggregationsHelper时,您会在这一行得到一个空指针异常。试着这样做:

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