2017-06-02 121 views
0

我在索引中有成千上萬的文檔,我想要做的是彙總具有相同日期的文檔並顯示該日期的數量。日期是字符串。爲了讓您更好地瞭解我想要的內容,請說明該日期的字段稱爲arrivalDate,並且每個文檔都有一個特定的到達日期。我要顯示的數據是這樣的:根據字符串值彙總數據

20110105:5個記錄

20120501:2條記錄

20120602:15條

等等。這基本上就像一個GROUP BY SQL查詢,除了使用彈性搜索。我如何使用彈性搜索來構建這樣的查詢?

+0

只是一個建議,不要將日期字段保存爲字符串。 Elasticsearch有幾個數據類型,'date'類型就是其中之一。
好處 - *您可以使用許多常用的「日期」類型字段,這些字段是內置的,比如製作日期直方圖。您還可以比較日期,並在某個日期有更新或更舊的過濾條件。 –

回答

3

你需要的是term聚合。它看起來像這樣。

{ 
    "aggs": { 
    "group_bu_date": { 
     "terms": { 
     "field": "arrivalDate" 
     } 
    } 
    } 
} 
+0

執行該命令時收到錯誤。我的錯誤是:默認情況下,Fielddata在文本字段中被禁用。在[arrivalDate]上設置fielddata = true,以便通過取消倒置索引來加載內存中的fielddata。請注意,這可以使用大量的內存。 – user2896120

+0

我修好了,非常感謝! – user2896120