本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。 Elasticsearch: 权威指南 » 数据建模 » 父-子关系文档 » 通过父文档查询子文档 « 通过子文档查询父文档 子文档聚合 »
通过父文档查询子文档编辑
虽然 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
。
不带评分的 has_parent 查询
当 has_parent
查询用于非评分模式(比如 filter 查询语句)时, score_mode
参数就不再起作用了。因为这种模式只是简单地包含或排除文档,没有评分,那么 score_mode
参数也就没有意义了。
Getting Started Videos
- Starting Elasticsearch
- Introduction to Kibana
- Logstash Starter Guide
官方地址:https://www.elastic.co/guide/cn/elasticsearch/guide/current/has-parent.html