WARNING: Version 2.3 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Has Parent Query
editHas Parent Query
editThe has_parent
query accepts a query and a parent type. The query is
executed in the parent document space, which is specified by the parent
type. This query returns child documents which associated parents have
matched. For the rest has_parent
query has the same options and works
in the same manner as the has_child
query.
{ "has_parent" : { "parent_type" : "blog", "query" : { "term" : { "tag" : "something" } } } }
Scoring capabilities
editThe has_parent
also has scoring support. The
supported score types are score
or none
. The default is none
and
this ignores the score from the parent document. The score is in this
case equal to the boost on the has_parent
query (Defaults to 1). If
the score type is set to score
, then the score of the matching parent
document is aggregated into the child documents belonging to the
matching parent document. The score mode can be specified with the
score_mode
field inside the has_parent
query:
{ "has_parent" : { "parent_type" : "blog", "score_mode" : "score", "query" : { "term" : { "tag" : "something" } } } }
Sorting
editChild documents can’t be sorted by fields in matching parent documents via the
regular sort options. If you need to sort child documents by field in the parent
documents then you can should use the function_score
query and then just sort
by _score
.
Sorting tags by parent document' view_count
field:
{ "query": { "has_parent" : { "parent_type" : "blog", "score_mode" : "score", "query" : { "function_score" : { "script_score": { "script": "_score * doc['view_count'].value" } } } } } }