0

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

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

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

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

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

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

4

1 回答 1

3

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

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

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

于 2013-03-29T10:56:56.930 回答