如何在elasticsearch中建立关系?

时间:2018-03-23 09:35:32

标签: elasticsearch

我是弹性搜索的新手,我想知道如何在弹性搜索中存储关系数据。

例如:

{
 "Teacher name": "tom", 
 "Students": [{"name":"John"}, {"name":"raj"}....]
},

{
 "Teacher name": "joe", 
 "Students": [{"name":"raj"}, {"name":"jane"}....]
}

这是我的模型数据,可以将学生存储在数组字段中。 或者更好的方法来做到这一点。

感谢。

1 个答案:

答案 0 :(得分:0)

在Elasticsearch中,您有两种替代解决方案来映射教师/学生关系:nested object vs join datatype(父/子)。

如果学生人数不多,您可以将学生存储为嵌套对象数组,就像您的示例一样。但缺点与磁盘空间消耗以及每次更新或将单个学生添加到现有文档时的事实有关:首先删除完整文档并将其重新编入索引作为新文档。

另一方面,join数据类型使用起来更复杂(您必须使用父子查询),但允许您以更加独立的方式存储子项。如果子项数量很多并且子项的更新和插入频繁,则join数据类型很好。