2016-08-16 4 views
1

現在、弾性検索ではcustomer_idでグループ化できます。続き弾性検索の2つの日付の間のグループ化とフィルタリングの最大(日付)

は、今、私たちは

  1. は最後の二つの日付
  2. 間の日付
  3. 、2つの日付の間に最初の注文日を注文したドキュメントを検索するグループをフィルタリングするために必要な文書構造

    { 
        "order_id":"6", 
        "customer_id":"1", 
        "customer_name":"shailendra", 
        "mailing_addres":"[email protected]", 
        "actual_order_date":"2000-04-30", 
        "is_veg":"0", 
        "total_amount":"2499", 
        "store_id":"276", 
        "city_id":"12", 
        "payment_mode":"cod", 
        "is_elite":"0", 
        "product":["1","2"], 
        "coupon_id":"", 
        "client_source":"1", 
        "vendor_id":"", 
        "vendor_name: "", 
        "brand_id":"", 
        "third_party_source":"" 
    
    } 
    

    です

これをどのように達成できますか?

答えて

0

以下のクエリで試すことができます。各顧客バケット内で、2つの日付の間ですべてのドキュメントをさらにフィルタリングし(ここでは2016年8月をとりました)、日付フィールドにstats集約を実行します。 minの値は最初の注文日で、maxの値は最後の注文日になります。

{ 
    "aggs": { 
    "customer_ids": { 
     "terms": { 
     "field": "customer_id" 
     }, 
     "aggs": { 
     "date_filter": { 
      "filter": { 
      "range": { 
       "actual_order_date": { 
       "gt": "2016-08-01T00:00:00.000Z", 
       "lt": "2016-09-01T00:00:00.000Z" 
       } 
      } 
      }, 
      "aggs": { 
      "min_max": { 
       "stats": { 
       "field": "actual_order_date" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

返事のおかげで、これは各顧客のための最小値と最大注文日が得られますが、私は何を必要とすることは、第1順位2つの日付の間の日付(2つの与えられた日付(入力)と顧客の間でそのラストオーダー日付のお客様です入力)これらの2つの入力日付範囲は異なります。 – user6720627

+0

さて、見てみましょう – Val

関連する問題