ElasticSearch关系查询?

时间:2019-11-09 10:35:11

标签: elasticsearch

我有两个ES文档(例如):

{
    "id": "person_1",
    "name": "John"
}

{
    "id": "organisation",
    "employeesById": [ "person_1" ]
}

是否可以执行查询以返回所有雇员名为“ John”的组织,还是我必须对上述数据结构进行非规范化处理,然后再执行employeeById.employee.name?

1 个答案:

答案 0 :(得分:0)

在不了解您的用例的情况下,我建议您尝试进行非规范化。例如,

{
  "id": "person_1",
  "name": "John",
  "organisation": "organisation_id"
}

如果(1)两个文档都存储在相同的索引中,并且(2)一个人经常更改组织,则保持非规范化文档的一致性将要求更高(需要检索和更新许多相关文档)。在这种情况下,我建议通过使用Join数据类型(link to Elastic documentation)和使用parent-join查询来运行搜索(link to Elastic documentation)来定义关系人组织。