具有稀疏字段的单个_type对索引的影响与多个类型(在ElasticSearch中)相同吗?

时间:2017-04-20 18:11:06

标签: elasticsearch lucene

当索引只有一种类型时,稀疏字段应用了多少?我正在制作一个包含大量小型文档的索引,这些文档都是相同的类型,并且包含许多字段。只有一小部分字段被填充,因为所有文档都是相同类型的。根据这篇文章,当帖子稀少时,人们会担心。这似乎表明,如果索引具有多个类型,它可能只是一个问题。如果索引只有一种类型怎么办?

  

一种类型中存在的字段也会消耗资源   此字段不存在的类型的文档。这是一般的   Lucene指数的问题:他们不喜欢稀疏性。稀疏的帖子   由于之间的高增量,列表无法有效压缩   连续比赛。对于doc值,问题更严重:for   速度原因,doc值经常保留固定数量的磁盘空间   对于每个文档,以便可以有效地处理值。这个   意味着如果Lucene确定需要一个字节来存储所有内容   给定数字字段的值,它也将消耗一个字节   没有此字段值的文档。

参考:Index-vs-Types

1 个答案:

答案 0 :(得分:0)

稀疏性与许多类型并不严格相关。在使用多个类型而不是多个索引的博客文章(类型与索引)的上下文中,确实存在稀疏字段的缺点:如果在索引中定义了3种类型,其中每种类型都有一个字段:{{1}在类型field1type1类型field2type2类型field3中,每个文档都添加到此索引中,无论它属于哪种类型, 将包含所有这三个字段(在Lucene级别)。但是对于每种类型,只有属于该类型的字段才有价值。这意味着索引的每个文档都将填充1/3。

这也是,为什么Elasticsearch要求具有相同名称但在不同类型中的字段具有相同的字段类型:因为在Lucene级别,这是该索引中所有文档的所有字段,无论是类型。

一个索引中的一种类型和具有3个字段的文档也会发生同样的情况。如果这些字段几乎没有值(就像你的情况一样),那么仍然会出现稀疏性。