【发布时间】:2015-12-15 00:50:21
【问题描述】:
这个问题主要针对 Elasticsearch,但我相信答案将基于底层 Lucene 语义。
我正在考虑在同一个索引中使用多种类型。许多字段将是可排序的,并且许多字段将仅由一种特定类型使用。即:字段将是稀疏的,例如平均 10% 的覆盖率。
由于排序将所有文档的值保留在内存中(无论类型如何),我想知道是否存在与缺少字段值有关的内存开销(在我的情况下约为 90%)
【问题讨论】:
标签: elasticsearch lucene
这个问题主要针对 Elasticsearch,但我相信答案将基于底层 Lucene 语义。
我正在考虑在同一个索引中使用多种类型。许多字段将是可排序的,并且许多字段将仅由一种特定类型使用。即:字段将是稀疏的,例如平均 10% 的覆盖率。
由于排序将所有文档的值保留在内存中(无论类型如何),我想知道是否存在与缺少字段值有关的内存开销(在我的情况下约为 90%)
【问题讨论】:
标签: elasticsearch lucene
在官方 Elasticsearch 博客上最近一篇名为 "Index vs Type" 的博文中,作者解决了一个常见问题,即选择使用多个索引还是多个类型对其数据进行建模。
一个事实是 Lucene 索引不喜欢稀疏性。结果,作者说
存在于一种类型中的字段也会消耗不存在该字段类型的文档的资源。 [...] doc 值的问题更严重:出于速度原因,doc 值通常为每个文档保留固定数量的磁盘空间,以便可以有效地处理值。
有一个Lucene issue 旨在改善这种情况,它已在 5.4 中修复,并将在 Elasticsearch v2.2 中提供。即便如此,作者建议仍然以尽可能限制稀疏性的方式对数据进行建模。
【讨论】: