假设1000个文档中只有10个文档有一个名为limitedEdition
的字段,是否会为其他990文档添加某种开销,而这些文档中没有该字段limitedEdition
的任何值?这些文档最终会在elasticsearch索引中具有空值/引用,有点像在sql中添加可空列?
{_id:1,category:[4],feature:[1,2]},
{_id:2,category:[5],feature:[3,5]},
{_id:3,category:[7],feature:[2,4]},
.....
{_id:10,category:[5],limitedEdition:1000}
我的项目中的可索引字段正在增长,因此我必须重新考虑这些稀疏列是应该存储在elasticsearch中还是重新组织字段。
答案 0 :(得分:1)
虽然这是重复的,但这个领域最近有一些发展。使用Lucene 7(Elasticsearch 6.0的一部分),doc值的稀疏性得到了很大改善:
通过这些更改,您最终只需支付实际使用的doc值,索引大小,索引性能等。这与索引的其他部分相同,如发布,存储字段,术语向量等。 ,这意味着具有非常稀疏的doc值的用户不再看到合并时间过长或合并时索引变得意外巨大。
来自http://blog.mikemccandless.com/2017/03/apache-lucene-70-is-coming-soon.html。
您可以在https://home.apache.org/~mikemccand/lucenebench/sparseResults.html上看到更改。