ElasticSearch将在内部使用一个包含150-200个字段的映射。因为没有文档对每个字段都有值,所以我最终会得到很多稀疏数据。
是的,索引中的不同类型共享相同的映射结构。每个类型在每个文档上都只有一个“ _type”字段,当在特定类型上进行搜索时,该字段将自动用于过滤。
稀疏文件有多糟糕?
从索引到类型引用
一种类型的字段还将消耗该字段不存在的类型的文档资源。 这是Lucene索引的一个普遍问题:它们不喜欢稀疏性。
即使某些索引仅包含几个文档,我还是可以为每种类型使用单独的索引更好吗?
您可能已经知道,每个单独的索引都有其自身的开销,并且类型与稀疏文档的结合不太好。
我会建议
- 带有少量文档(具有大量稀疏字段)的文档类型应转到单独的索引,这显然是通过将分片的数量减少到最小数量(即1)来实现的。默认情况下,每个索引有5个分片。如果您的文档数量不是那么大,那么使用5个分片就没有意义,这将减少搜索查询的负担。
- 具有相同重要字段的文档类型应转到具有不同类型的相同索引。根据文档总数,您可能希望增加分片设置的数量。
- 如果某些文档类型包含大量文档,则可能要为其创建单独的索引。
请记住,您应该在集群中保留合理数量的分片,这可以通过减少不需要高写入吞吐量和/或存储少量文档的索引的分片数量来实现。



