【问题标题】:Elastic Search Date Range弹性搜索日期范围
【发布时间】:2014-06-24 19:52:42
【问题描述】:

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

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

数据的一个例子是:

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您查看different format options for dates stored in ElasticSearch 了吗?如果这对您不起作用,或者您不想在没有时间的情况下存储日期,您可以尝试此查询,我猜这将适用于您的确切用例:

    {
        "range": {
            "expirationDate": {
                "gt": "now-1d"
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您还可以对时间进行四舍五入,以便您的查询返回自当天开始以来发生的任何事情:

      假设 现在2017-03-07T07:00:00.000现在/d2017-03-07T00:00:00.000

      您的查询将是:

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

      elastic search documentation on rounding times

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 2019-01-08
        相关资源
        最近更新 更多