2.X/6. Modeling Your Data

6-3-1. Parent-Child Mapping

drscg 2017. 9. 23. 14:36

All that is needed in order to establish the parent-child relationship is to specify which document type should be the parent of a child type. This must be done at index creation time, or with the update-mapping API before the child type has been created.

부모-자식 관계를 형성하기 위해 필요한 것은, 어떤 document type이 자식 type의 부모가 될 것인지를 지정하는 것이다. 이것은 index 생성시에 하거나, 자식 type이 생성되기 전에 update-mapping API를 통해 할 수 있다.

As an example, let’s say that we have a company that has branches in many cities. We would like to associate employees with the branch where they work. We need to be able to search for branches, individual employees, and employees who work for particular branches, so the nested model will not help. We could, of course, use application-side-joins or data denormalization here instead, but for demonstration purposes we will use parent-child.

예를 들어, 여러 도시에 지점을 가지고 있는 기업을 생각해 보자. 직원과 그들이 일하는 지점을 연결하려 할 것이다. 지점, 개별 직원, 특정 지점에서 일하는 직원을 검색할 수 있도록 해야 한다. 따라서, nested 모델은 도움이 되지 않는다. 물론, application-side-joins이나, data denormalization을 사용할 수 있으나, 여기에서는 설명을 위해, 부모-자식을 사용할 것이다.

All that we have to do is to tell Elasticsearch that the employee type has the branch document type as its _parent, which we can do when we create the index:

해야 할 작업은 employee type이 branch document type을 자신의 _parent 로 가지도록, index 생성시에 지정하는 것이다.

PUT /company
{
  "mappings": {
    "branch": {},
    "employee": {
      "_parent": {
        "type": "branch" 
      }
    }
  }
}

employee type의 document는 branch type의 자식이다.