Returns parent documents whose
joined
child documents match a
provided query. You can create parent-child relationships between documents in
the same index using a
join
field mapping.
Because it performs a join, the
has_child
is slow compared to other queries.
Its performance degrades as the number of matching child documents pointing to
unique parent documents increases. Each
has_child
query in a search can
increase query time significantly.
If you care about query performance, do not use this query. If you need to use
the
has_child
query, use it as rarely as possible.
(Required, query object) Query you wish to run on child documents of the
type
field. If a child document matches the search, the query returns the parent
document.
ignore_unmapped
(Optional, Boolean) Indicates whether to ignore an unmapped
type
and not
return any documents instead of an error. Defaults to
false
.
If
false
, Elasticsearch returns an error if the
type
is unmapped.
You can use this parameter to query multiple indices that may not contain the
type
.
max_children
(Optional, integer) Maximum number of child documents that match the
query
allowed for a returned parent document. If the parent document exceeds this
limit, it is excluded from the search results.
min_children
(Optional, integer) Minimum number of child documents that match the
query
required to match the query for a returned parent document. If the parent
document does not meet this limit, it is excluded from the search results.
score_mode
(Optional, string) Indicates how scores for matching child documents affect the
root parent document’s
relevance score
. Valid values
You cannot sort the results of a
has_child
query using standard
sort options
.
If you need to sort returned documents by a field in their child documents, use
a
function_score
query and sort by
_score
. For example, the following query
sorts returned documents by the
click_count
field of their child documents.
GET /_search
"query": {
"has_child": {
"type": "child",
"query": {
"function_score": {
"script_score": {
"script": "_score * doc['click_count'].value"
"score_mode": "max"