原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-has-child-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-has-child-query.html
本地英文版地址: ../en/query-dsl-has-child-query.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
返回与其联结的(joined)且匹配查询的子文档的父文档。 可以使用join字段映射在同一索引中的文档之间创建父子关系。
因为它要执行联结,所以与其他查询相比,has_child
比较慢。
随着指向唯一父文档的匹配的子文档数量的增加,其性能会下降。
搜索中的每个has_child
查询都会显著地增加查询时间。
如果你在乎查询性能,请不要使用此查询。
如果你确实需要使用has_child
查询,请尽量少用。
若要使用has_child
查询,索引中必须包含 join 字段映射。例如:
PUT /my_index { "mappings": { "properties" : { "my-join-field" : { "type" : "join", "relations": { "parent": "child" } } } } }
-
type
- (必需, string) 为 join 字段映射的子关系的名称。
-
query
-
(必需, query object) 希望在
type
字段的子文档上运行的查询。如果子文档与搜索匹配,查询将返回父文档。 -
ignore_unmapped
-
(可选, boolean) 指示是否忽略未映射的
type
并且不返回任何文档而不是错误。默认为false
。如果为
false
,当type
未映射时 Elasticsearch 会返回错误。可以使用此参数来查询可能不包含
type
的多个索引。 -
max_children
-
(可选, integer) 允许的返回的父文档中与
query
相匹配的子文档的最大数量。 如果父文档中的与该查询匹配的子文档的数量超过此数量,它将从搜索结果中排除。 -
min_children
-
(可选, integer) 允许的返回的父文档中与
query
相匹配的子文档的最小数量。 如果父文档中的与该查询匹配的子文档的数量未达到此数量,它将从搜索结果中排除。 -
score_mode
-
(可选, string) 指示匹配子文档的分数如何影响根父文档的 相关性评分。有效值有:
-
none
(默认) -
不使用匹配子文档的相关性分数。该查询为父文档分配
0
分。 -
avg
- 取所有匹配子文档的相关性分数的平均值。
-
max
- 取所有匹配子文档的相关性分数的最大值。
-
min
- 取所有匹配子文档的相关性分数的最小值。
-
sum
- 把所有匹配子文档的相关性分数相加。
-
不能使用标准 排序选项 对 has_child
查询的结果进行排序。
如果需要按子文档中的字段对返回的文档进行排序,请使用 function_score
查询并按 _score
排序。
例如,下面这个查询按子文档的 click_count
字段对返回的文档进行排序:
GET /_search { "query": { "has_child" : { "type" : "child", "query" : { "function_score" : { "script_score": { "script": "_score * doc['click_count'].value" } } }, "score_mode" : "max" } } }