我的 elasticsearch 中有日期,其中包含类型为日期的时间戳字段。 现在,我将仅两个日期之间过滤结果。我正在使用嵌套和 C#。
如何获得时间戳记在mai 2019 1th,10:00:00到mai 5 5th,23:59:59之间的结果?
现在我的搜索请求如下:
result = ElasticClient.Search<_doc>
(document => document
.Source(src => src
.Includes(i => i
.Fields(
p => p.Timestamp,
p => p.Value
)
)
)
.Query(q => q
.Match(m => m
.Field(f => f.DataRecordId)
.Query(search)
)
)
);
答案 0 :(得分:0)
您需要为此使用range query。假设用于日期字段的格式为YYYY-MM-dd HH:mm:ss
,并且字段名称为timestamp
,以下查询将起作用:
{
"query": {
"range": {
"timestamp": {
"gte": "2019-05-01 10:00:00",
"lte": "2019-05-05 23:59:59"
}
}
}
}
答案 1 :(得分:0)
如果要过滤此范围内的数据,请尝试以下操作:
var result = ElasticClient.Search<_doc>
(document => document
.Source(src => src
.Includes(i => i
.Fields(
p => p.Timestamp,
p => p.Value
)
)
)
.Query(q => q
.Bool(b => b
.Must(m => m
.DateRange(r => r
.Field(p => p.Timestamp)
.GreaterThanOrEquals("2019-05-01T10:00:00")
.LessThanOrEquals("2019-05-05T23:59:59")
)
)
)
)
);