原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-has-parent-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-has-parent-query.html
本地英文版地址: ../en/query-dsl-has-parent-query.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
返回与其 联结的(joined) 且匹配查询的父文档的子文档。 可以使用 join 字段映射在同一索引中的文档之间创建父子关系。
因为它要执行联结,所以与其他查询相比,has_parent
比较慢。
随着匹配父文档数量的增加,其性能会下降。
搜索中的每个has_parent
查询都会显著地增加查询时间。
要使用 has_parent
查询,索引必须包含 join 字段映射。例如:
PUT /my-index { "mappings": { "properties" : { "my-join-field" : { "type" : "join", "relations": { "parent": "child" } }, "tag" : { "type" : "keyword" } } } }
-
parent_type
- (必需, string) 为 join 字段映射的父关系的名称。
-
query
-
(必需, query object) 希望在
parent_type
字段的父文档上运行的查询。如果父文档与搜索匹配,查询将返回子文档。 -
score
-
(可选, boolean) 指示匹配父文档的 相关性评分 是否聚合到其子文档中。默认为
false
。如果为
false
,Elasticsearch 将忽略父文档的相关性评分。 Elasticsearch 还为每个子文档分配一个与query
的boost
值相等的相关性评分,默认为1
。如果为
true
,则匹配父文档的相关性评分被聚合到其子文档的相关性评分中。 -
ignore_unmapped
-
(可选, boolean) 指示是否忽略未映射的
parent_type
并且不返回任何文档而不是错误。默认为false
。如果为
false
,当parent_type
未映射时 Elasticsearch 会返回错误。可以使用此参数来查询可能不包含
parent_type
的多个索引。
不能使用标准 排序选项 对 has_parent
查询的结果进行排序。
如果需要按父文档中的字段对返回的文档进行排序,请使用 function_score
查询并按 _score
排序。
例如,下面这个查询按父文档的 view_count
字段对返回的文档进行排序:
GET /_search { "query": { "has_parent" : { "parent_type" : "parent", "score" : true, "query" : { "function_score" : { "script_score": { "script": "_score * doc['view_count'].value" } } } } } }