我有两个ES文档(例如):
{
"id": "person_1",
"name": "John"
}
{
"id": "organisation",
"employeesById": [ "person_1" ]
}
是否可以执行查询以返回所有雇员名为“ John”的组织,还是我必须对上述数据结构进行非规范化处理,然后再执行employeeById.employee.name?
答案 0 :(得分:0)
在不了解您的用例的情况下,我建议您尝试进行非规范化。例如,
{
"id": "person_1",
"name": "John",
"organisation": "organisation_id"
}
如果(1)两个文档都存储在相同的索引中,并且(2)一个人经常更改组织,则保持非规范化文档的一致性将要求更高(需要检索和更新许多相关文档)。在这种情况下,我建议通过使用Join数据类型(link to Elastic documentation)和使用parent-join查询来运行搜索(link to Elastic documentation)来定义关系人组织。