| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | [[query-dsl-has-parent-query]]=== Has Parent QueryThe `has_parent` query accepts a query and a parent type. The query isexecuted in the parent document space, which is specified by the parenttype. This query returns child documents which associated parents havematched. For the rest `has_parent` query has the same options and worksin the same manner as the `has_child` query.[source,js]--------------------------------------------------GET /_search{    "query": {        "has_parent" : {            "parent_type" : "blog",            "query" : {                "term" : {                    "tag" : "something"                }            }        }    }}--------------------------------------------------// CONSOLENote that the `has_parent` is a slow query compared to other queries in thequery dsl due to the fact that it performs a join. The performance degradesas the number of matching parent documents increases. If you care about queryperformance you should not use this query. However if you do happen to usethis query then use it as less as possible. Each `has_parent` query that getsadded to a search request can increase query time significantly.[float]==== Scoring capabilitiesThe `has_parent` also has scoring support. The default is `false` whichignores the score from the parent document. The score is in thiscase equal to the boost on the `has_parent` query (Defaults to 1). Ifthe score is set to `true`, then the score of the matching parentdocument is aggregated into the child documents belonging to thematching parent document. The score mode can be specified with the`score` field inside the `has_parent` query:[source,js]--------------------------------------------------GET /_search{    "query": {        "has_parent" : {            "parent_type" : "blog",            "score" : true,            "query" : {                "term" : {                    "tag" : "something"                }            }        }    }}--------------------------------------------------// CONSOLE[float]==== Ignore UnmappedWhen set to `true` the `ignore_unmapped` option will ignore an unmapped `type`and will not match any documents for this query. This can be useful whenquerying multiple indexes which might have different mappings. When set to`false` (the default value) the query will throw an exception if the `type`is not mapped.[float]==== SortingChild documents can't be sorted by fields in matching parent documents via theregular sort options. If you need to sort child documents by field in the parentdocuments then you should use the `function_score` query and then just sortby `_score`.Sorting tags by parent document' `view_count` field:[source,js]--------------------------------------------------GET /_search{    "query": {        "has_parent" : {            "parent_type" : "blog",            "score" : true,            "query" : {                "function_score" : {                    "script_score": {                        "script": "_score * doc['view_count'].value"                    }                }            }        }    }}--------------------------------------------------// CONSOLE
 |