2013-03-29 62 views
0

当我使用ElasticSearch时,我可以将json文档保存到其中并按默认搜索。此外,我可以指定一些索引设置,我可以在其中描述字段类型和索引设置。我的问题是关于在ElasticSearch中存储数据的内部实现。就像在MongoDB中一样,我可以在这里存储动态的json数据,所以所有的文档都会按原样保存(实际上在BSON中,但在这里并没有改变)。例如:Elasticsearch方案优化

{ 
    firstName:"A", 
    lastName: "B" 
} 

这里我们可以看到“方案数据”比“实际数据”占用更多的磁盘空间。所以在MongoDB中它是很好的做法,以尽量减少“计划数据”的大小,类似这样的:

{ 
    f:"A", 
    l:"B" 
} 

,并在应用程序代码提供了一些映射来支持这一方案。在Elasticsearch(Lucene)中我可以指定一些方案,所以在内部它只能保存“实际数据”而不是“实际+方案”,但我不确定这一点,因为我也可以存储动态json数据。

所以问题是我应该在ElasticSearch中实现这样的优化?

回答

3

是的,它会占用更多的空间,但我不担心。 Elasticsearch中的文档存储为完整的JSON,位于_source字段中。它占用磁盘空间,并在返回结果时临时使用内存。

但是,您可以将_source字段设置为压缩字段,并且在从0.90开始的Elasticsearch版本中,整个分段是压缩的,并且字段名称是压缩的良好候选者。

我宁愿让我的文件可读而不是神秘。

+0

好的,谢谢你的评论。 –