2016-03-01 58 views
3

我们为企业提供大量网站,每家企业都会有多种文件类型,他们可能希望通过ES进行索引和搜索。应该创建多个文档类型还是多个索引?

通常,文档类型每个业务具有的数量小于20,每种类型的可具有小于100K的文件(通常要少得多)。

我不知道我应该如何设置这些网站的数据?我应该将它们放入单独的索引中,还是应该将它们全部用不同的文档类型粘贴到相同的索引中?或者如果还有别的东西?

或者,我甚至应该尽可能对索引中小型网站做不同的处理?如果我计划增长到5万个网站,我应该准备哪些最坏的情况?

回答

3

如果您创建一个多次映射类型的一个索引,你将有你需要确保在两种不同类型的映射具有相同名称的字段有两种不同类型的一大制约因素,即你不能有名为blablaCount的字段在一个映射类型中是long,在相同索引内的另一个映射类型中是double

您的续航里程可能会有所不同,但自ES 2.0和great mapping refactoring之后,通常会有recommended带有多个索引和每个索引一个映射类型。

我会做的是为每个索引创建多个索引和一个映射/文档类型,然后您只需将属于给定业务的所有索引与alias进行分组,以便如果您需要查询所有索引给定的业务,你可以简单地查询该业务的别名。

另一种选择是把所有企业的所有文件在同一组索引,只是区分每个企业使用其businessId领域term查询,或者甚至routingbusinessId

然而,在你的情况,因为每个企业没有那么多的文件,它可能是资源打造全套指数为每个业务的浪费,所以我可能会选择第二个选项去,即创建一组索引,每个索引都有自己的映射/文档类型,然后将所有业务的所有文档存储在这些索引中。

+0

非常感谢。由于每个企业都将定义自己的文档类型(不同的字段名称和字段类型等),因此似乎不可能让他们共享相同的一组索引,除非我们将每个业务生成的文档类型放在不同的文档类型中。这似乎是唯一的选择留给我的是每个网站使用不同的索引?每个人似乎都会说它会造成开销的负担,只是你想我看到多少开销? – mr1031011

+0

好的,如果每个企业都有他们想要创建的映射的总体纬度以及他们的领域的类型和命名,那么确实,最好给他们自己的一套指数,对每个企业来说,就是这样。这取决于我们正在讨论的企业数量,如果每个企业的指数超过20个,群集可以快速占用资源。但是,如果事先知道每个索引可能不包含那么多文档,那么您可能很幸运,并且每个索引只需要一到两个主分片,而不是默认的五个。 – Val

+0

另外,考虑到你似乎在做生意,我强烈建议你阅读Wordpress如何进入他们的Elasticsearch迁移:[here](http://fr.slideshare.net/tlovett1/modernizing-wordpress-搜索与弹性搜索)和[这里](http://gibrown.com/2014/01/09/scaling-elasticsearch-part-1-overview/),然后按照后者的所有链接;) – Val

相关问题