Elasticsearch方案优化



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

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

在这里我们可以看到"方案数据"比"实际数据"占用更多的磁盘空间。所以在MongoDB这是一个很好的做法,尽量减少"方案数据"的大小,像这样:

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

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

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

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

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

我更喜欢让我的文档可读性强,而不是晦涩。

最新更新