如何通过Elasticsearch Nest查询C#始终获得最近2小时的日志?

时间:2017-09-29 13:49:59

标签: c# elasticsearch nest

我的问题与使用Nest DSL编写查询有关。我想让我的日志只持续2个小时。我开发了一个控制台应用程序,我将其注册为Windows任务。它将每2小时工作但它应该总是2小时日志我的代码如下:

            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

1 个答案:

答案 0 :(得分: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"))
                                  )
                              )
                          )