在聚合帮助程序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异常,比如由于某种原因没有设置内部字典
这是因为当在不传递字典的情况下创建AggregationsHelper
时,您会在这一行得到一个空指针异常。试着这样做:
var temp = new Dictionary<string, IAggregation>();
var aggr = new AggregationsHelper(temp);
aggr.Filter("test");