123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- [[query-dsl-parent-id-query]]
- === Parent Id Query
- added[5.0.0]
- The `parent_id` query can be used to find child documents which belong to a particular parent.
- Given the following mapping definition:
- [source,js]
- --------------------------------------------
- PUT /my_index
- {
- "settings": {
- "mapping.single_type": false
- },
- "mappings": {
- "blog_post": {
- "properties": {
- "name": {
- "type": "keyword"
- }
- }
- },
- "blog_tag": {
- "_parent": {
- "type": "blog_post"
- },
- "_routing": {
- "required": true
- }
- }
- }
- }
- --------------------------------------------
- // CONSOLE
- // TESTSETUP
- [source,js]
- --------------------------------------------------
- GET /my_index/_search
- {
- "query": {
- "parent_id" : {
- "type" : "blog_tag",
- "id" : "1"
- }
- }
- }
- --------------------------------------------------
- // CONSOLE
- The above is functionally equivalent to using the following
- <<query-dsl-has-parent-query, `has_parent`>> query, but performs
- better as it does not need to do a join:
- [source,js]
- --------------------------------------------------
- GET /my_index/_search
- {
- "query": {
- "has_parent": {
- "parent_type": "blog_post",
- "query": {
- "term": {
- "_id": "1"
- }
- }
- }
- }
- }
- --------------------------------------------------
- // CONSOLE
- ==== Parameters
- This query has two required parameters:
- [horizontal]
- `type`:: The **child** type. This must be a type with `_parent` field.
- `id`:: The required parent id select documents must referrer to.
- `ignore_unmapped`:: When set to `true` this will ignore an unmapped `type` and will not match any
- documents for this query. This can be useful when querying multiple indexes
- which might have different mappings. When set to `false` (the default value)
- the query will throw an exception if the `type` is not mapped.
|