【问题标题】:elasticsearch specific hours弹性搜索特定时间
【发布时间】:2015-11-19 16:06:10
【问题描述】:

我正在尝试编写一个查询,该查询将仅返回 x 天后当天当前小时的结果。例如,如果现在的时间是 12:00,我想获得 11:00-12:00 范围内的结果,14 天前的每一天。我见过Elasticsearch sum total values for specific hours within a month,但它需要我选择固定时间。简单地从“现在”中提取小时是行不通的,因为返回 1 小时可能会导致移动到昨天,然后该范围将不起作用。

【问题讨论】:

  • 您能否用您正在使用的映射、一些示例文档和您期望的结果来更新您的问题?

标签: elasticsearch date-range elasticsearch-query


【解决方案1】:

您可以将过滤后的布尔查询与多个应范围过滤器一起使用。您可以在代码中计算小时日期范围并动态构建 X 天的查询。下面的示例是在 00:30 计算的 3 天(因此跨越了日期边界)

{
    "query": {
        "filtered": {
            "query": {
                "match_all": {}
            },
            "filter": {
                "bool": {
                    "should": [
                       { "range": {
                           "myDateField" : {
                               "gte" : "2015-11-18T23:30:00.00",
                               "lt" : "2015-11-19T00:30:00.00"
                            }
                        }},
                        { "range": {
                            "myDateField" : {
                                "gte" : "2015-11-17T23:30:00.00",
                                "lt" : "2015-11-18T00:30:00.00"
                            }
                        }},
                        { "range": {
                            "myDateField" : {
                                "gte" : "2015-11-16T23:30:00.00",
                                "lt" : "2015-11-17T00:30:00.00"
                            }
                        }}
                    ]
                }

            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2019-05-04
    • 2017-07-29
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多