WARNING: Version 0.90 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 Child Query
editHas Child Query
editThe has_child
query works the same as the
has_child filter,
by automatically wrapping the filter with a
constant_score
(when using the default score type). It has the same syntax as the
has_child filter:
{ "has_child" : { "type" : "blog_tag", "query" : { "term" : { "tag" : "something" } } } }
An important difference with the top_children
query is that this query
is always executed in two iterations whereas the top_children
query
can be executed in one or more iteration. When using the has_child
query the total_hits
is always correct.
Scoring capabilities
editThe has_child
also has scoring support from version 0.20.2
. The
supported score types are max
, sum
, avg
or none
. The default is
none
and yields the same behaviour as in previous versions. If the
score type is set to another value than none
, the scores of all the
matching child documents are aggregated into the associated parent
documents. The score type can be specified with the score_type
field
inside the has_child
query:
{ "has_child" : { "type" : "blog_tag", "score_type" : "sum", "query" : { "term" : { "tag" : "something" } } } }
Scope
editThe _scope
support has been removed from version 0.90.beta1
. See:
https://github.com/elasticsearch/elasticsearch/issues/2606
A _scope
can be defined on the filter allowing to run facets on the
same scope name that will work against the child documents. For example:
{ "has_child" : { "_scope" : "my_scope", "type" : "blog_tag", "query" : { "term" : { "tag" : "something" } } } }
Memory Considerations
editWith the current implementation, all _id
values are loaded to memory
(heap) in order to support fast lookups, so make sure there is enough
memory for it.