我的问题与使用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
答案 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"))
)
)
)