如何让FacetFilter正常工作?

时间:2014-11-27 11:58:47

标签: elasticsearch logstash nest

我试图在短时间内从弹性搜索计算一些统计数据但是,尽管我指定了时间间隔,但我仍然从整个数据集中得到结果。

这是我的代码

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)
    )
);

可能是什么问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用字符串作为时间戳后问题解决了,而不是长。

 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)
        )
    );