我们为企业托管许多网站,每个企业都会有许多他们可能希望通过 ES 进行索引和搜索的文档类型。
通常,每个业务拥有的文档类型数量少于 20 个,每个类型可能拥有少于 100k 个文档(通常要少得多)。
我不确定应该如何设置这些网站的数据?我应该将它们放入单独的索引中,还是应该将它们全部放入具有不同文档类型的同一索引中?或者如果还有别的什么?
或者也许,我什至应该以不同的方式对中小型网站进行索引?如果我计划将站点扩展至 5 万个,我应该为哪些最坏的情况做好准备?
如果您使用多种映射类型创建一个索引,那么您将面临一个很大的约束,要求您确保两种不同映射类型中具有相同名称的字段没有两种不同的类型,即您不能有一个名为blablaCount
成为一个long
在一种映射类型和double
在同一索引内的另一个映射类型中。
您的里程可能会有所不同,但自从 ES 2.0 和伟大的映射重构 https://www.elastic.co/blog/great-mapping-refactoring,通常是受到推崇的 https://www.elastic.co/blog/index-vs-type与多个索引和每个索引一种映射类型一起使用。
我要做的是创建多个索引和每个索引一个映射/文档类型,然后您只需将属于给定业务的所有索引与alias https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html,这样如果您需要查询给定业务的所有索引,您只需查询该业务的别名即可。
另一种选择是将所有企业的所有文档放在同一组索引中,并使用term
查询其businessId
场,甚至通过routing https://www.elastic.co/guide/en/elasticsearch/reference/2.2/mapping-routing-field.html on the businessId
.
但是,就您而言,由于每个企业没有那么多文档,因此为每个企业创建一整套索引可能会浪费资源,所以我可能会选择第二个选项,即创建一组索引索引,每个索引都有自己的映射/文档类型,然后将所有业务的所有文档存储在这些索引中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)