diff --git a/docs/reference/query-dsl/parent-id-query.asciidoc b/docs/reference/query-dsl/parent-id-query.asciidoc index 89fa4135133a0..3add028c5c19c 100644 --- a/docs/reference/query-dsl/parent-id-query.asciidoc +++ b/docs/reference/query-dsl/parent-id-query.asciidoc @@ -4,68 +4,113 @@ Parent ID ++++ -The `parent_id` query can be used to find child documents which belong to a particular parent. -Given the following mapping definition: +Returns child documents <> to a specific parent document. +You can use a <> field mapping to create parent-child +relationships between documents in the same index. +[[parent-id-query-ex-request]] +==== Example request + +[[parent-id-index-setup]] +===== Index setup +To use the `parent_id` query, your index must include a <> +field mapping. To see how you can set up an index for the `parent_id` query, try +the following example. + +. Create an index with a <> field mapping. ++ +-- [source,js] --------------------------------------------- -PUT my_index +---- +PUT /my-index { - "mappings": { - "properties": { - "my_join_field": { - "type": "join", - "relations": { - "my_parent": "my_child" + "mappings": { + "properties" : { + "my-join-field" : { + "type" : "join", + "relations": { + "my-parent": "my-child" + } + } } - } } - } } -PUT my_index/_doc/1?refresh +---- +// CONSOLE +// TESTSETUP +-- + +. Index a parent document with an ID of `1`. ++ +-- +[source,js] +---- +PUT /my-index/_doc/1?refresh { - "text": "This is a parent document", - "my_join_field": "my_parent" + "text": "This is a parent document.", + "my-join-field": "my-parent" } +---- +// CONSOLE +-- -PUT my_index/_doc/2?routing=1&refresh +. Index a child document of the parent document. ++ +-- +[source,js] +---- +PUT /my-index/_doc/2?routing=1&refresh { - "text": "This is a child document", + "text": "This is a child document.", "my_join_field": { - "name": "my_child", + "name": "my-child", "parent": "1" } } - --------------------------------------------- +---- // CONSOLE -// TESTSETUP +-- + +[[parent-id-query-ex-query]] +===== Example query + +The following search returns child documents for a parent document with an ID of +`1`. [source,js] --------------------------------------------------- -GET /my_index/_search +---- +GET /my-index/_search { "query": { - "parent_id": { - "type": "my_child", - "id": "1" - } + "parent_id": { + "type": "my-child", + "id": "1" + } } } --------------------------------------------------- +---- // CONSOLE +[[parent-id-top-level-params]] +==== Top-level parameters for `parent_id` + +`type`:: +(Required, string) Name of the child relationship mapped for the +<> field. -==== Parameters +`id`:: +(Required, string) ID of the parent document. The query will return child +documents of this parent document. -This query has two required parameters: +`ignore_unmapped`:: ++ +-- +(Optional, boolean) Indicates whether to ignore an unmapped `type` and not +return any documents instead of an error. Defaults to `false`. -[horizontal] -`type`:: The **child** type name, as specified in the <>. -`id`:: The ID of the parent document. +If `false`, {es} returns an error if the `type` is unmapped. -`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. +You can use this parameter to query multiple indices that may not contain the +`type`. +--