| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | [[search-aggregations-bucket-children-aggregation]]=== Children AggregationA special single bucket aggregation that selects child documents that have the specified type, as defined in a <<parent-join,`join` field>>.This aggregation has a single option:* `type` - The child type that should be selected.For example, let's say we have an index of questions and answers. The answer type has the following `join` field in the mapping:[source,console]--------------------------------------------------PUT child_example{  "mappings": {    "properties": {      "join": {        "type": "join",        "relations": {          "question": "answer"        }      }    }  }}--------------------------------------------------The `question` document contain a tag field and the `answer` documents contain an owner field. With the `children`aggregation the tag buckets can be mapped to the owner buckets in a single request even though the two fields exist intwo different kinds of documents.An example of a question document:[source,console]--------------------------------------------------PUT child_example/_doc/1{  "join": {    "name": "question"  },  "body": "<p>I have Windows 2003 server and i bought a new Windows 2008 server...",  "title": "Whats the best way to file transfer my site from server to a newer one?",  "tags": [    "windows-server-2003",    "windows-server-2008",    "file-transfer"  ]}--------------------------------------------------// TEST[continued]Examples of `answer` documents:[source,console]--------------------------------------------------PUT child_example/_doc/2?routing=1{  "join": {    "name": "answer",    "parent": "1"  },  "owner": {    "location": "Norfolk, United Kingdom",    "display_name": "Sam",    "id": 48  },  "body": "<p>Unfortunately you're pretty much limited to FTP...",  "creation_date": "2009-05-04T13:45:37.030"}PUT child_example/_doc/3?routing=1&refresh{  "join": {    "name": "answer",    "parent": "1"  },  "owner": {    "location": "Norfolk, United Kingdom",    "display_name": "Troll",    "id": 49  },  "body": "<p>Use Linux...",  "creation_date": "2009-05-05T13:45:37.030"}--------------------------------------------------// TEST[continued]The following request can be built that connects the two together:[source,console]--------------------------------------------------POST child_example/_search?size=0{  "aggs": {    "top-tags": {      "terms": {        "field": "tags.keyword",        "size": 10      },      "aggs": {        "to-answers": {          "children": {            "type" : "answer" <1>          },          "aggs": {            "top-names": {              "terms": {                "field": "owner.display_name.keyword",                "size": 10              }            }          }        }      }    }  }}--------------------------------------------------// TEST[continued]<1> The `type` points to type / mapping with the name `answer`.The above example returns the top question tags and per tag the top answer owners.Possible response:[source,console-result]--------------------------------------------------{  "took": 25,  "timed_out": false,  "_shards": {    "total": 1,    "successful": 1,    "skipped" : 0,    "failed": 0  },  "hits": {    "total" : {      "value": 3,      "relation": "eq"    },    "max_score": null,    "hits": []  },  "aggregations": {    "top-tags": {      "doc_count_error_upper_bound": 0,      "sum_other_doc_count": 0,      "buckets": [        {          "key": "file-transfer",          "doc_count": 1, <1>          "to-answers": {            "doc_count": 2, <2>            "top-names": {              "doc_count_error_upper_bound": 0,              "sum_other_doc_count": 0,              "buckets": [                {                  "key": "Sam",                  "doc_count": 1                },                {                  "key": "Troll",                  "doc_count": 1                }              ]            }          }        },        {          "key": "windows-server-2003",          "doc_count": 1, <1>          "to-answers": {            "doc_count": 2, <2>            "top-names": {              "doc_count_error_upper_bound": 0,              "sum_other_doc_count": 0,              "buckets": [                {                  "key": "Sam",                  "doc_count": 1                },                {                  "key": "Troll",                  "doc_count": 1                }              ]            }          }        },        {          "key": "windows-server-2008",          "doc_count": 1, <1>          "to-answers": {            "doc_count": 2, <2>            "top-names": {              "doc_count_error_upper_bound": 0,              "sum_other_doc_count": 0,              "buckets": [                {                  "key": "Sam",                  "doc_count": 1                },                {                  "key": "Troll",                  "doc_count": 1                }              ]            }          }        }      ]    }  }}--------------------------------------------------// TESTRESPONSE[s/"took": 25/"took": $body.took/]<1> The number of question documents with the tag `file-transfer`, `windows-server-2003`, etc.<2> The number of answer documents that are related to question documents with the tag `file-transfer`, `windows-server-2003`, etc.
 |