应该创建多种文档类型或多个索引吗?

问题描述 投票:0回答:2

我们为企业托管许多网站,每个企业都会有许多他们可能希望通过 ES 进行索引和搜索的文档类型。

通常,每个企业拥有的文档类型数量少于20种,每种类型的文档数量可能少于100k(通常要少得多)。

我不确定应该如何为这些网站设置数据?我应该将它们放入单独的索引中,还是应该将它们全部放入具有不同文档类型的同一索引中?或者还有其他选择吗?

也许,我什至应该以不同的方式对中小型网站进行索引?如果我计划扩展到 5 万个站点,我应该为哪些最坏的情况做好准备?

elasticsearch
2个回答
12
投票

如果你创建一个包含多种映射类型的索引,那么你将面临一个很大的约束,要求你确保在两种不同的映射类型中同名的字段不具有两种不同的类型,即你不能有一个名为

 的字段blablaCount
是同一索引内一种映射类型中的
long
和另一种映射类型中的
double

您的情况可能会有所不同,但自从 ES 2.0 和伟大的映射重构以来,通常建议使用多个索引并为每个索引使用一种映射类型。

我要做的是创建多个索引,并为每个索引创建一个映射/文档类型,然后您只需使用 alias 将属于给定业务的所有索引分组,这样,如果您需要查询给定业务的所有索引业务,您只需查询该业务的别名即可。

另一种选择是将所有企业的所有文档放在同一组索引中,并使用对其

term
字段进行
businessId
查询,甚至通过 businessId 上的
路由
来简单区分每个企业。

但是,在您的情况下,由于每个企业没有那么多文档,为每个企业创建一整套索引可能会浪费资源,所以我可能会选择第二个选项,即创建一个一组索引,每个索引都有自己的映射/文档类型,然后将所有业务的所有文档存储在这些索引中。


5
投票

Elasticsearch 从 7.0 开始完全删除映射类型,因此鼓励每个文档类型使用单个索引。

https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html

© www.soinside.com 2019 - 2024. All rights reserved.