文档索引大小超过原始大小

时间:2016-05-30 02:14:37

标签: c# elasticsearch nest

我正在尝试将文档(.doc,.ppt,.pdf等)索引为附件(将内容字段存储为BASE64内容),然后执行搜索查询并突出显示结果文件上的内容字段。 当我索引它们时,为什么文件的大小会增加?

例如:索引文档的文件夹的总大小为30mb。但是头部插件显示相同数量的文件(从同一文件夹索引)的127mb

这是我的地图样式:

var response= client.CreateIndex(defaultIndex, c => c
                    .Mappings(m => m
                    .Map<Document>(mp => mp
                    .Properties(ps => ps
                        .String(s => s.Name(e => e.Title))
                        .Attachment(s => s.Name(p => p.File)
                            .FileField(ff => ff.Name(f => f.File)
                            .TermVector(TermVectorOption.WithPositionsOffsetsPayloads)
                            .Analyzer("english")
                            .Store(true)))))));

观察:(不知道我对此是否正确) 当我使用手动ID索引文档时,大小约为36mb,但是当我删除I​​d字段和索引时,它需要花费很多时间来索引,大小更多并且搜索功能无法正常工作。它取决于文件的索引方式吗?)

TIA

1 个答案:

答案 0 :(得分:1)

指数的大小取决于许多不同的因素。文件夹的原始大小不能很好地估计您的索引的重量。

这很大程度上取决于你的字段的映射,即你是否使用大文本内容索引字段(似乎是你的情况),如果你有自定义分析器和ngrams tokenizer和/或令牌过滤器等等Lucene存储many different kind of files并且相同的令牌(带有额外的位置和偏移量)可能位于不同的文件中,所有这些都加起来就是索引的大小。

此外,如果您在测试期间反复对文件夹重新索引几次,那么索引大小将会增加,因为您将拥有大量已删除的文档。

最后,inflate your content已知BASE64大约三分之一。