Get mutiple field data from both parent and child in a single elasticsearch query
This sounds like a job for inner hits. This feature allows the you to get at the hits that made a has_child
or has_parent
match.
In your case you'd make a query against the parent, with a trivial has_child
(ie match_all) or vice versa, for example something like
{
"query" : {
"has_child" : {
"type" : "child",
"query" : {
"match_all": {}
},
"inner_hits" : {}
}
}
}
I have made some assumptions... let me know if they are correct
- You want a document from the parent mapping which has a document id = 1
- You also want all the child documents which have parent_id = 1
- You are passing this parent_id from your code to elasticsearch.
- You are not asking elasticsearch to filter through multiple parent documents. Before you hit elasticsearch, you already know you want parent document with id = 1
If this is the case, you can create two separate queries
First query would be "get parent doc with id = 1"
Second query would be "get all child docs with parent_id = 1"
And you can use the Elasticsearch's "multisearch API" to send both these requests to elasticsearch in one network call
MultiSearch API