通过父文档查询子文档 | Elasticsearch: 权威指南 | Elastic
2025-10-31
虽然 nested 查询只能返回最顶层的文档
,但是父文档和子文档本身是彼此独立并且可被单独查询的。我们使用 has_child 语句可以基于子文档来查询父文档,使用 has_parent 语句可以基于父文档来查询子文档。
has_parent 和 has_child 非常相似,下面的查询将会返回所有在 UK 工作的雇员:
GET /company/employee/_search
{
"query": {
"has_parent": {
"type": "branch",
"query": {
"match": {
"country": "UK"
}
}
}
}
}has_parent 查询也支持 score_mode 这个参数,但是该参数只支持两种值: none (默认)和 score 。每个子文档都只有一个父文档,因此这里不存在将多个评分规约为一个的情况, score_mode 的取值仅为 score 和 none 。
官方地址:https://www.elastic.co/guide/cn/elasticsearch/guide/current/has-parent.html