0

x 日前の現在の時間の結果のみを返すクエリを作成しようとしています。たとえば、現在の時刻が 12:00 の場合、14 日前の各日の 11:00 ~ 12:00 の範囲で結果を取得したいと考えています。Elasticsearch が 1 か月内の特定の時間の合計値を見たことがありますが、固定時間を選択する必要があります。「今」から時間を抽出するだけではうまくいきません.

4

1 に答える 1

0

複数の should 範囲フィルターでフィルター処理された bool クエリを使用できます。コードで時間の日付範囲を計算し、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"
                            }
                        }}
                    ]
                }

            }
        }
    }
}
于 2015-11-19T08:06:10.617 に答える