我正在尝试在很短的时间范围内通过Elasticsearch计算一些统计信息,但是,尽管我指定了间隔,但仍然可以从整个数据集中获得结果。
这是我的代码
var minDate = new DateTime(1970, 1, 1);
var fromDate = DateTime.Parse("2014-11-27T11:00:00.000Z").AddTicks(-minDate.Ticks).AddHours(-2);
var toDate = DateTime.Parse("2014-11-27T11:15:00.000Z").AddTicks(-minDate.Ticks).AddHours(-2);
var results = client.Search<Dalsp>(s => s
.From(0)
.Size(100)
.FacetTermsStats(fts => fts
.FacetFilter(fdesc => fdesc
.Range(range =>
range.Greater(fromDate.Ticks / 10000).Lower(toDate.Ticks / 10000)
)
)
.KeyField(t => t.sp_name)
.ValueField(t => t.total_time)
)
);
可能是什么问题?提前致谢。
最佳答案
使用字符串作为时间戳后,而不是使用long来解决问题。
var results = client.Search<Dalsp>(s => s
.From(0)
.Size(100)
.Query(q =>
q.Range(range => range.OnField("@timestamp").LowerOrEquals(endDateStr).GreaterOrEquals(startDateStr))
)
.FacetTermsStats(fts => fts
.KeyField(t => t.sp_name)
.ValueField(t => t.total_time)
)
);
关于elasticsearch - 如何使FacetFilter正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27170236/