2017-01-03 56 views
5

我有一個查詢,每次運行一個網站時加載。該查詢彙總了三個不同的術語字段和大約300萬個文檔,因此需要6-7秒才能完成。數據不會頻繁改變,結果的當前性也不是關鍵。東西「物化視圖」 - 像ElasticSearch

我知道我可以使用別名來創建類似於RDMS世界的「視圖」。是否也可以填充它,以便查詢結果被緩存?在這種情況下,有沒有其他方式緩存可能會有幫助,還是需要爲聚合數據創建附加索引並不時進行更新?

+0

彙總300萬份文檔並不是很多。所以很高興知道爲什麼需要6-7秒來運行您的查詢並可能首先進行優化。 – Val

+0

好的,我該怎麼做?我啓用了緩慢日誌,但是你沒有給我太多的信息。這個查詢非常簡單,爲這樣的三個字段執行'aggs':''aggFieldName「:{」terms「:{」field「:」myField「,」size「:0}},' – nik

+1

首先,您可以使用'在你的查詢中解釋= true'來獲得一些見解。然後,您還可以使用[Profile API](https://www.elastic.co/guide/en/elasticsearch/reference/current/_profiling_aggregations.html)來對您的聚合進行分析 – Val

回答

-1

您創建物化視圖。它最終具有聚合函數數據。由於您已經插入了彙總數據,現在當您查詢它時,它會更快。我覺得沒有必要緩存。即使我創建了MV,它也極大地提高了性能。話雖如此,你甚至可以去尋找彈性搜索,如果你的數據頻繁變化,你可以緩存聚合查詢。我覺得MV和彈性搜索提供了相同的性能。