我计划将Elasticsearch主要用于数据分析。我有大量的文件,有很多,数字(最多4个字节)的属性。我的文档中的大多数字段只有大约30%的值。如果我理解正确,我可以利用Doc Values功能,这与某些数据库中的柱状数据布局类似。我想知道Elasticsearch / Lucene将如何存储这些数据。是否使用了任何压缩(例如,运行长度),或者是密集数据布局,其中空值将在存储上占用与值相同的空间?
答案 0 :(得分:0)
ElasticSearch的默认行为是在NULL
值的情况下根本不添加字段。您可以使用null_value
强制映射字段,但适用于支持NULL
的类型。例如:long
字段无法使用字符串null_value
进行映射。
因此,要解决此问题,ElasticSearch不会为文档中缺少的字段分配默认空间。但是如果你查询一些从未有过值的字段,你可能会遇到MissingFieldException
。要避免这种情况,请在建立索引之前显式映射字段。如果明确映射,请确保将字段的null_value
属性设置为数据输入范围之外。