Has Parent Query

edit

The has_parent query works the same as the has_parent filter, by automatically wrapping the filter with a constant_score (when using the default score type). It has the same syntax as the has_parent filter. This query is experimental and is available from version 0.19.10.

{
    "has_parent" : {
        "parent_type" : "blog",
        "query" : {
            "term" : {
                "tag" : "something"
            }
        }
    }
}

Scoring capabilities

edit

The has_parent also has scoring support from version 0.20.2. 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 type can be specified with the score_type field inside the has_parent query:

{
    "has_parent" : {
        "parent_type" : "blog",
        "score_type" : "score",
        "query" : {
            "term" : {
                "tag" : "something"
            }
        }
    }
}

Scope

edit

The _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 parent documents. For example:

{
    "has_parent" : {
        "_scope" : "my_scope",
        "parent_type" : "blog",
        "query" : {
            "term" : {
                "tag" : "something"
            }
        }
    }
}

Memory Considerations

edit

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.