2017-09-29 27 views
0

我的問題與使用Nest DSL寫查詢有關。我只想在最近2個小時內獲得我的日誌。我開發了一個控制檯應用程序,並將其註冊爲Windows任務。這將每工作2小時,但它應該始終爲2小時的日誌我的代碼如下:我怎樣才能得到總是最後2小時日誌Elasticsearch巢查詢C#?

  var searchResponse = EsClient().Search<Source>(sd => sd 
 
           .Index(IndexName) 
 
           .Type(TypeName) 
 
           .Query(q => q 
 
            .Match(m => m.Field(config.GetSection("Criterias")["SearchField"]).Query(config.GetSection("Criterias")["SearchValue"]) 
 
        )));

我的時間戳:@timestamp:2017年9月29日,14:56:37.903

回答

3

您可以使用bool/filter查詢,以包括您的時間戳字段另一range查詢:

var searchResponse = EsClient().Search<Source>(sd => sd 
          .Index(IndexName) 
          .Type(TypeName) 
          .Query(q => q 
          .Bool(b => b 
           .Filter(
            bf => bf.Match(m => m.Field(config.GetSection("Criterias")["SearchField"]).Query(config.GetSection("Criterias")["SearchValue"])), 
            bf => bf.DateRange(dr => dr 
             .OnField("@timestamp") 
             .GreaterThan(DateMath.Now.Subtract("2h")) 
           ) 
          ) 
         )