2017-07-19 154 views
3

我有這樣的數據:彈性搜索查詢最大值AGGS

Name  Fees Collected  Date 
Name1  100    2017-05-01T12:00:00 
Name1  200    2017-05-02T12:00:00 
Name2  500    2017-05-05T12:00:00 
Name2  600    2017-05-06T12:00:00 
Name3  1000    2017-05-010T12:00:00 
Name3  1100    2017-05-011T12:00:00 
Name4  1500    2017-05-011T12:00:00 

我如何可以編寫一個查詢返回的過濾分組,對每個組的2分鐘文檔數最高日聚集/?

我期待以下的輸出:

Name  Fees Collected Date 
Name1  200    2017-05-02T12:00:00 
Name2  600    2017-05-06T12:00:00 
Name3  1100   2017-05-011T12:00:00 

最後,我會得到彙總如下

"aggregations" { 
    "Fees Collected " : "1900" //(200+600+1100) 
    } 

反正是有彈性的搜索來實現這一目標? 謝謝..

回答

1

有一種方法!

首先,您需要在「名稱」字段添加「min_doc_count」的術語聚合:3. 然後在字段「日期」上進行子max_aggregation。

財產以後這樣的:

"aggs": { 
"split_by_name": { 
    "terms": { 
    "field": "Name", 
    "min_doc_count": 3 
    }, 
    "aggs": { 
    "max_date": { 
     "max": { 
     "field": "Date" 
     } 
     } 
    } 
    } 
}