2.X/6. Modeling Your Data

6-3-4. Finding Children by Their Parents

drscg 2017. 9. 23. 14:32

While a nested query can always return only the root document as a result, parent and child documents are independent and each can be queried independently. The has_child query allows us to return parents based on data in their children, and the has_parent query returns children based on data in their parents.

nested query는 결과로 root document만 반환하지만, 부모와 자식 document는 독립적이며, 각각 독립적으로 query될 수 있다. has_child query는 자식의 데이터를 기준으로 부모를 반환할 수 있다. 그리고 has_parent query는 부모의 데이터를 기준으로 자식을 반환할 수 있다.

It looks very similar to the has_child query. This example returns employees who work in the UK:

그것은 has_child query와 매우 비슷하다. 아래 예제는 UK에서 일하고 있는 직원을 반환한다.

GET /company/employee/_search
{
  "query": {
    "has_parent": {
      "type": "branch", 
      "query": {
        "match": {
          "country": "UK"
        }
      }
    }
  }
}

branch type의 부모를 가진 자식을 반환한다.

The has_parent query also supports the score_mode, but it accepts only two settings: none (the default) and score. Each child can have only one parent, so there is no need to reduce multiple scores into a single score for the child. The choice is simply between using the score (score) or not (none).

has_parent query 또한 score_mode 를 지원한다. 그러나, 2가지 설정만을 가진다. (기본값인 none 과 score) 각 자식은 하나의 부모만을 가질 수 있다. 따라서 자식을 위해 다수의 score를 하나의 score로 줄일 필요가 없다. score를 사용하느냐(score) 아니냐(none)의 선택이다.