2014-11-27 7 views
0

Я пытаюсь вычислить некоторые статистические данные из elasticsearch с коротким периодом времени, но, хотя я указал интервал, я все еще получаю результаты от всего набора данных.Как я могу заставить FacetFilter работать правильно?

Это мой код

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

Что может быть проблема? Заранее спасибо.

ответ

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) 
     ) 
    ); 
Смежные вопросы