我有一个正确分析日期范围的查询。但是,我的数据库有一个默认值,所有日期的时间戳都是00:00:00。这意味着即使它们仍然有效,今天仍然有效的项目也会显示为已过期。如何调整以下内容只查看项目的日期而不是时间(expirationDate)。
{
"range": {
"expirationDate": {
"gte": "now"
}
}
}
数据的一个例子是:
"expirationDate": "2014-06-24T00:00:00.000Z",
答案 0 :(得分:0)
你看过different format options for dates stored in ElasticSearch了吗?如果这对您不起作用,或者您不想在没有时间的情况下存储日期,则可以尝试此查询,这对于您的确切用例我会猜测:
{
"range": {
"expirationDate": {
"gt": "now-1d"
}
}
}
答案 1 :(得分:0)
您还可以向下舍入时间,以便查询返回自当天开始以来发生的任何事情:
假设 现在 2017-03-07T07:00:00.000 , now / d 2017-03-07T00:00:00.000
您的查询将是:
{
"range": {
"expirationDate": {
"gte": "now/d"
}
}
}