2016-03-15 64 views
2

我elasticsearch有一個指標,已導入下面的JSON文件:集團按日期和類別elasticsearch查詢

{"index" : {"_id": "1"}} 
{"Name": "apple","Type": "fruit","Rate": "64","Date": "2016-01-24"} 
{"index" : {"_id": "2"}}`enter code here` 
{"Name": "grape","Type": "fruit","Rate": "100","Date": "2016-01-21"} 
{"index" : {"_id": "3"}} 
{"Name": "banana","Type": "fruit","Rate": "72","Date": "2016-01-14"} 
{"index" : {"_id": "4"}} 
{"Name": "orange","Type": "fruit","Rate": "82","Date": "2016-01-13"} 
{"index" : {"_id": "5"}} 
{"Name": "mango","Type": "fruit","Rate": "53","Date": "2016-02-16"} 
{"index" : {"_id": "6"}} 
{"Name": "grapes","Type": "fruit","Rate": "56","Date": "2016-02-18"} 
{"index" : {"_id": "7"}} 
{"Name": "blueberry","Type": "fruit","Rate": "96","Date": "2016-02-25"} 
{"index" : {"_id": "8"}} 
{"Name": "watermelon","Type": "fruit","Rate": "124","Date": "2016-02-12"} 
{"index" : {"_id": "9"}} 
{"Name": "papaya","Type": "fruit","Rate": "75","Date": "2016-03-09"} 
{"index" : {"_id": "10"}} 
{"Name": "carrot","Type": "vegetable","Rate": "25","Date": "2016-01-21"} 
{"index" : {"_id": "11"}} 
{"Name": "ladyfinger","Type": "vegetable","Rate": "89","Date": "2016-01-26"} 
{"index" : {"_id": "12"}} 
{"Name": "potato","Type": "vegetable","Rate": "36","Date": "2016-02-14"} 
{"index" : {"_id": "13"}} 
{"Name": "tomato","Type": "vegetable","Rate": "45","Date": "2016-02-07"} 
{"index" : {"_id": "14"}} 
{"Name": "spinach","Type": "vegetable","Rate": "25","Date": "2016-02-24"} 
{"index" : {"_id": "15"}} 
{"Name": "raddish","Type": "vegetable","Rate": "21","Date": "2016-02-13"} 
{"index" : {"_id": "16"}} 
{"Name": "pumpkin","Type": "vegetable","Rate": "78","Date": "2016-03-10"} 
{"index" : {"_id": "17"}} 
{"Name": "lemon","Type": "vegetable","Rate": "98","Date": "2016-03-11"} 

現在我想每種類型每個月的數量,到現在我能夠找到總計數組按類別按以下彈性搜索查詢:

{ 
    "size": 0, 
    "aggs": { 
    "group_by_Type": { 
     "terms": { 
     "field": "Type" 
     } 
    } 
    } 
} 

我希望此計數除以月份。請幫忙

回答

4

好開始!現在,你只需要使用一個date_histogram aggregationinterval設置爲month,然後移動當前的terms聚集爲date_histogram聚集的子聚集,基本上是這樣的:

{ 
    "size": 0, 
    "aggs": { 
    "group_by_month": { 
     "date_histogram": { 
     "field": "Date", 
     "interval": "month" 
     }, 
     "aggs": { 
     "group_by_Type": { 
      "terms": { 
      "field": "Type" 
      } 
     } 
     } 
    } 
    } 
} 

UPDATE

如果您只想關注一段時間,可以添加一個查詢來限制文檔集合:

{ 
    "size": 0, 
    "query": { 
     "range": { 
      "Date": { 
       "gte": "2016-01-01T00:00:00.000Z", 
       "lt": "2016-02-01T00:00:00.000Z" 
      } 
     } 
    }, 
    "aggs": { 
    "group_by_month": { 
     "date_histogram": { 
     "field": "Date", 
     "interval": "month" 
     }, 
     "aggs": { 
     "group_by_Type": { 
      "terms": { 
      "field": "Type" 
      } 
     } 
     } 
    } 
    } 
} 
+0

謝謝很多Val的快速​​回覆,你的查詢工作。 :) – Vaibhav

+0

很酷,很高興它的作品! – Val

+0

以及如果我想僅獲取2016年1月的特定月份的詳細信息,該怎麼辦? – Vaibhav