2016-11-16 21 views
1

ES 2の問題については何も見つかりませんでした。*ここの問題やドキュメントに関しては、これが重複していればごめんなさい。ElasticSearch 2.4 2つの日付フィールドの差を使った日付範囲のヒストグラム

私がしようとしているのは、2つの日付フィールド間のレコードの違いに基づいてバケットを作成できるElasticSearchクエリで集計を作成することです。

I.e.店舗のESにデータがある場合は、purchase_dateフィールドとshipped_dateフィールドの時間差を確認することができます。

その場合、shipped_date - purchase_dateが< 1日、1〜2日、3〜4日または5日以上のときのヒットを与えるバケットを持つ集計を作成したいと考えています。

理想的には、私はこれがESクエリで可能であることを期待していました。その場合、またはそれぞれのヒットの時間差に基づいて自分の配列に結果を処理するのが最善の方法でしょうか?

答えて

0

これは、ES 2.4でデフォルトで有効になっている組み込みの式言語を使用することで実現できました。私が望んだ機能は、結果をグループ化してEndDateと処理日の違いを15日単位で表示することでした。クエリの関連部分は次のとおりです。

{ 
    ..., 
    "aggs": { 
    "reason": { 
     "date_histogram": { 
     "min_doc_count": 1, 
     "interval": "1296000000ms", // 15 days 
     "format": "epoch_millis", 
     "script": { 
     "lang": "expression", 
     "inline": "doc['DateProcessed'] > doc['EndDate'] ? doc['DateProcessed'] - doc['EndDate'] : -1" 
     }  
    } 
    ... 
    } 
} 
関連する問題