弹性搜索方案优化

时间:2013-03-29 10:00:31

标签: mongodb lucene elasticsearch

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

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

在这里我们可以看到“方案数据”比“实际数据”占用更多的磁盘空间。因此,在MongoDB中,最好将“方案数据”的大小最小化,如下所示:

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

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

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

1 个答案:

答案 0 :(得分:3)

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

但是,您可以设置要压缩的_source字段,并在0.90以后的Elasticsearch版本中压缩整个段,并且字段名称是压缩的良好候选。

我希望保持我的文件可读而不是神秘。