elasticsearch,Mongodb,Lucene,elasticsearch" /> elasticsearch,Mongodb,Lucene,elasticsearch" />

Mongodb 弹性搜索方案优化

Mongodb 弹性搜索方案优化,mongodb,lucene,elasticsearch,Mongodb,Lucene,elasticsearch,当我使用ElasticSearch时,我可以将json文档保存到其中,并在默认情况下进行搜索。此外,我还可以指定一些索引设置,在这些设置中,我可以描述用于索引的字段类型和设置。我的问题是关于在ElasticSearch中存储数据的内部实现。就像在MongoDB中一样,我可以在这里存储动态json数据,所以所有文档都将按原样保存(实际上是在BSON中,但在这里不存在)。例如: { firstName:"A", lastName: "B" } 在这里,我们可以看到“方案数据”比“实际数据”

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

{
  firstName:"A",
  lastName: "B"
}
在这里,我们可以看到“方案数据”比“实际数据”占用更多的磁盘空间。因此,在MongoDB中,最佳做法是最小化“方案数据”的大小,如下所示:

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


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

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

但是,您可以将
\u source
字段设置为压缩,并且在0.90以后的Elasticsearch版本中,整个段都会被压缩,字段名是压缩的最佳候选项


我更喜欢让我的文档可读而不是晦涩难懂。

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

但是,您可以将
\u source
字段设置为压缩,并且在0.90以后的Elasticsearch版本中,整个段都会被压缩,字段名是压缩的最佳候选项

我更喜欢让我的文档可读而不是晦涩难懂