엘라스틱서치와 같은 분산 시스템에서 전통적인 SQL의 조인 연산을 수행하는 것은 굉장히 큰 비용이 든다.
부모/자식 관계 형태로 모델링해야하는 경우가 있는데, 이러한 경우에 SQL 조인과 비슷한 기능을 하는 Nested 쿼리와 has_child, has_parent 쿼리를 제공한다.
nested 쿼리는 nested 타입의 필드를 포함하고 있는 문서에서 각 중첩구조를 마치 독립적인 문서처럼 질의할수 있도록 한다. 쿼리와 매칭되면 부모 도큐먼트는 반환한다.
path 옵션으로 중첩된 필드를 명시하고, query 옵션에 nested 필드검색에 사용할 쿼리를 명시한다.
GET /my_index/_search
{
"query": {
"nested": {
"path": "obj1",
"query": {
"bool": {
"must": [
{ "match": { "obj1.name": "blue" } },
{ "range": { "obj1.count": { "gt": 5 } } }
]
}
}
}
}
}