应该创建多个文档类型还是多个索引?

时间:2016-03-01 14:32:32

标签: elasticsearch

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

通常,每个企业的文档类型数量少于20个,每种类型的文档可能少于10万个(通常少得多)。

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

或者,或许,我甚至应该以不同的方式为中小型网站编制索引?如果我计划成长到50K网站,我应该准备什么样的最坏情况?

2 个答案:

答案 0 :(得分:5)

如果您创建一个具有多种映射类型的索引,您将有一个很大的约束,要求您确保两种不同映射类型中没有相同名称的字段有两种不同的类型,即您不能拥有名为blablaCount的字段在一种映射类型中为long,在同一索引中为另一种映射类型中的double

您的里程可能会有所不同,但自ES 2.0和great mapping refactoring以来,每个索引的几个索引和一种映射类型通常为recommended

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

另一种选择是将所有业务的所有文档放在同一组索引中,并简单地使用term字段上的businessId查询或甚至routing来区分每个业务。 businessId

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

答案 1 :(得分:1)

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

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