2015-12-15 30 views
0

這個問題主要針對Elasticsearch,但我相信答案將基於底層Lucene語義。elasticsearch/lucene是否爲fieldcache中的缺失值增加了內存開銷?

我正在考慮在同一個索引中使用多個類型。很多字段都是可排序的,很多字段只能用於一種特定的類型。即:領域將是稀疏的,平均說10%的覆蓋率。

由於分揀保留值的所有文檔存儲器(類型regardess),我想知道是否有與問候缺少fieldvalues任何內存開銷(的〜在我的情況下,90%)

回答

0

在最近在官方Elasticsearch博客上撰寫了一篇名爲"Index vs Type"的博客文章,作者在選擇是否想用多個索引或多種類型對數據進行建模時解決了一個常見問題。

一個事實是,Lucene索引不喜歡稀疏性。因此,作者說

存在於一個類型中的字段也會爲該字段不存在的類型的文檔佔用資源。 [...]對於文檔值,問題更加嚴重:出於速度原因,doc值通常會爲每個文檔保留固定數量的磁盤空間,以便可以高效地處理值。

有一個Lucene issue,旨在改善這種情況,已經在5.4中修復,並將在Elasticsearch v2.2中可用。即使如此,作者建議仍然儘可能地模擬數據以限制稀疏性。