ホーム>source

Elasticsearchで最大日付と最小日付の間の時間(同じツリーレベルの最大と最小)を計算するにはどうすればよいですか?

私のクエリ:-

<前>ウィズウィズ

そして、(短い)応答として、

<前>ウィズウィズ

誰かが解決策を見つけるのを手伝ってください? 前もって感謝します。

{ "size": 0, "query": { "bool": { "must": [] } }, "aggs": { "group_by_areaId": { "terms": { "size": 100000, "field": "areaId.keyword" }, "aggs": { "4m": { "date_histogram": { "field": "timestamp", "format": "yyyy-MM-dd'T'HH:mm:ssZZ", "interval": "4m", "order": { "_key": "asc" } }, "aggs": { "maxDate": { "max": { "field": "timestamp" } }, "minDate": { "min": { "field": "timestamp" } } } } } } } }
あなたの答え
  • 解決した方法 # 1

    あなたは bucket_script を活用することができます  各バケットの最小値と最大値の差を計算するためのパイプライン集約。

    以下を minDate と同じレベルに追加するだけです  そして maxDate

    <前>ウィズウィズ

    上記のサンプルデータの場合、この場合の結果は0.0175(つまり、約1分)になります。

    "hours": { "bucket_script": { "buckets_path": { "min": "minDate", "max": "maxDate" }, "script": "(params.max - params.min) / 3600000" } }

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ datetime - c ++で日付をミリ秒の時間に変換しますか?