[[query-dsl-has-child-filter]] === Has Child Filter The `has_child` filter accepts a query and the child type to run against, and results in parent documents that have child docs matching the query. Here is an example: [source,js] -------------------------------------------------- { "has_child" : { "type" : "blog_tag", "query" : { "term" : { "tag" : "something" } } } } -------------------------------------------------- The `type` is the child type to query against. The parent type to return is automatically detected based on the mappings. The way that the filter is implemented is by first running the child query, doing the matching up to the parent doc for each document matched. The `has_child` filter also accepts a filter instead of a query: [source,js] -------------------------------------------------- { "has_child" : { "type" : "comment", "filter" : { "term" : { "user" : "john" } } } } -------------------------------------------------- [float] ==== Memory Considerations With 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. [float] ==== Caching The `has_child` filter cannot be cached in the filter cache. The `_cache` and `_cache_key` options are a no-op in this filter. Also any filter that wraps the `has_child` filter either directly or indirectly will not be cached.