我在索引中有成千上萬的文檔,我想要做的是彙總具有相同日期的文檔並顯示該日期的數量。日期是字符串。爲了讓您更好地瞭解我想要的內容,請說明該日期的字段稱爲arrivalDate,並且每個文檔都有一個特定的到達日期。我要顯示的數據是這樣的:根據字符串值彙總數據
20110105:5個記錄
20120501:2條記錄
20120602:15條
等等。這基本上就像一個GROUP BY
SQL查詢,除了使用彈性搜索。我如何使用彈性搜索來構建這樣的查詢?
我在索引中有成千上萬的文檔,我想要做的是彙總具有相同日期的文檔並顯示該日期的數量。日期是字符串。爲了讓您更好地瞭解我想要的內容,請說明該日期的字段稱爲arrivalDate,並且每個文檔都有一個特定的到達日期。我要顯示的數據是這樣的:根據字符串值彙總數據
20110105:5個記錄
20120501:2條記錄
20120602:15條
等等。這基本上就像一個GROUP BY
SQL查詢,除了使用彈性搜索。我如何使用彈性搜索來構建這樣的查詢?
你需要的是term
聚合。它看起來像這樣。
{
"aggs": {
"group_bu_date": {
"terms": {
"field": "arrivalDate"
}
}
}
}
執行該命令時收到錯誤。我的錯誤是:默認情況下,Fielddata在文本字段中被禁用。在[arrivalDate]上設置fielddata = true,以便通過取消倒置索引來加載內存中的fielddata。請注意,這可以使用大量的內存。 – user2896120
我修好了,非常感謝! – user2896120
只是一個建議,不要將日期字段保存爲字符串。 Elasticsearch有幾個數據類型,'date'類型就是其中之一。
好處 - *您可以使用許多常用的「日期」類型字段,這些字段是內置的,比如製作日期直方圖。您還可以比較日期,並在某個日期有更新或更舊的過濾條件。 –