我有一个使用MVC模式开发的应用程序,我想现在索引它的多个模型,这意味着每个模型都有不同的数据结构。
使用多个索引是否更好,每个模型一个,或者每个模型的索引类型相同?我认为这两种方式都需要不同的搜索查询。我刚刚开始这个。
如果数据集很小或很大,两个概念之间是否存在绩效差异?
如果有人可以为我推荐一些好的样本数据,我会亲自测试第二个问题。
答案 0 :(得分:176)
这两种方法都有不同的含义。
假设您正在使用Elasticsearch的默认设置,每个模型的1个索引将显着增加分片数量,因为1个索引将使用5个分片,5个数据模型将使用25个分片;虽然在1个索引中有5个对象类型仍然会使用5个分片。
将每个数据模型作为索引的含义:
将每个数据模型作为索引中的对象类型的含义:
如果你问的是什么数据太多而不是小数据呢?通常,它取决于处理器速度和硬件的RAM,存储在Elasticsearch映射中的每个变量中的数据量以及查询要求;在您的查询中使用多个方面会显着减慢您的响应时间。没有直截了当的答案,你必须根据你的需要进行基准测试。
答案 1 :(得分:37)
尽管当时Jonathan的回答是正确的,但世界已经转移,现在看来ElasticSearch背后的人们有一个长期计划来放弃对多种类型的支持:
因此,对于新项目,每个索引仅使用一种类型将使ElasticSearch 6.x的最终升级变得更加容易。
答案 2 :(得分:13)
乔纳森的回答很棒。我想补充一些其他要点: