弹性搜索日期范围

时间:2014-06-24 19:52:42

标签: elasticsearch

我有一个正确分析日期范围的查询。但是,我的数据库有一个默认值,所有日期的时间戳都是00:00:00。这意味着即使它们仍然有效,今天仍然有效的项目也会显示为已过期。如何调整以下内容只查看项目的日期而不是时间(expirationDate)。

{
    "range": {
        "expirationDate": {
            "gte": "now"
        }
    }
}

数据的一个例子是:

"expirationDate": "2014-06-24T00:00:00.000Z",

2 个答案:

答案 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" } } }

elastic search documentation on rounding times