elasticsearch / lucene是否会对fieldcache中的缺失值施加内存开销?

时间:2015-12-15 00:50:22

标签: elasticsearch lucene

这个问题主要针对Elasticsearch,但我相信答案将基于潜在的Lucene语义。

我正在考虑在同一个索引中使用多个类型。很多字段都是可排序的,很多字段只能由一种特定类型使用。 I.e:字段稀疏,平均覆盖率为10%。

由于排序保留了内存中所有文档的值(类型的regardess),我想知道是否存在关于缺少字段值的任何内存开销(在我的情况下约为90%)

1 个答案:

答案 0 :(得分:0)

在最近一篇名为"Index vs Type"的官方Elasticsearch博客上的博客文章中,作者在选择是否想要使用多个索引或多种类型来建模数据时解决了一个常见的问题。

一个事实是,Lucene指数并不像稀疏性。结果,作者说

  

一种类型中存在的字段也会占用此字段不存在的类型的文档的资源。 [...]问题更严重的是doc值:出于速度原因,doc值通常会为每个文档保留固定数量的磁盘空间,以便可以有效地处理这些值。

Lucene issue旨在改善这种情况,已在5.4中修复,并将在Elasticsearch v2.2中提供。即便如此,作者仍建议尽可能地限制稀疏性,以便对数据进行建模。