-
Notifications
You must be signed in to change notification settings - Fork 1.5k
chapter43_part3: /404_Parent_Child/50_Has_child.asciidoc #276
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,7 @@ | ||
[[has-child]] | ||
=== Finding Parents by Their Children | ||
|
||
The `has_child` query and filter can be used to find parent documents based on | ||
the contents of their children.((("has_child query and filter")))((("parent-child relationship", "finding parents by their children"))) For instance, we could find all branches that | ||
have employees born after 1980 with a query like this: | ||
=== 根据子文档查询父文档 | ||
|
||
`has_child` 的 query 和 filter 可以根据子文档的内容来查询父文档。((("has_child query and filter")))((("parent-child relationship", "finding parents by their children")))例如,我们根据如下查询,可查出所有出生在1980年之后的雇员所在的公司: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
[source,json] | ||
------------------------- | ||
GET /company/branch/_search | ||
|
@@ -24,16 +21,10 @@ GET /company/branch/_search | |
} | ||
------------------------- | ||
|
||
Like the <<nested-query,`nested` query>>, the `has_child` query could | ||
match several child documents,((("has_child query and filter", "query"))) each with a different relevance | ||
score. How these scores are reduced to a single score for the parent document | ||
depends on the `score_mode` parameter. The default setting is `none`, which | ||
ignores the child scores and assigns a score of `1.0` to the parents, but it | ||
also accepts `avg`, `min`, `max`, and `sum`. | ||
`has_child` query 和 <<nested-query,`nested` query>> 类似,查询返回的结果都可以包括多个子文档((("has_child query and filter", "query"))),并且每一个子文档的评分值都不同。但是由于每一个子文档都带有评分,因此父文档的评分需要取决于 `score_mode` 这个参数。该参数有多种取值策略:默认为 `none` ,会忽略子文档的评分,并且会给父文档评分设置为 `1.0` ; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 第一句 建议: 类似于 <<nested-query, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
还可以设置成 `avg` 、 `min` 、 `max` 和 `sum` 。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 除此以外还可以..... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
|
||
The following query will return both `london` and `liverpool`, but `london` | ||
will get a better score because `Alice Smith` is a better match than | ||
`Barry Smith`: | ||
下面的查询将会返回 `london` 和 `liverpool` 。由于 `Alice Smith` 要比 `Barry Smith` 更加匹配查询条件,因此 `london` 会得到一个更高的评分。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 返回->同时返回 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
|
||
[source,json] | ||
------------------------- | ||
|
@@ -53,19 +44,14 @@ GET /company/branch/_search | |
} | ||
------------------------- | ||
|
||
TIP: The default `score_mode` of `none` is significantly faster than the other | ||
modes because Elasticsearch doesn't need to calculate the score for each child | ||
document. Set it to `avg`, `min`, `max`, or `sum` only if you care about the | ||
score.((("parent-child relationship", "finding parents by their children", "min_children and max_children"))) | ||
TIP: `score_mode` 为默认的 `none` 时,会显著地比其模式要快,这是因为Elasticsearch不需要计算每一个子文档的评分。只有当你真正需要关心评分结果时,才需要为 `source_mode` 设值,例如设成 `avg` 、 `min` 、 `max` 或 `sum` 。((("parent-child relationship", "finding parents by their children", "min_children and max_children"))) | ||
|
||
[[min-max-children]] | ||
==== min_children and max_children | ||
==== min_children 和 max_children | ||
|
||
The `has_child` query and filter both accept the `min_children` and | ||
`max_children` parameters,((("min_children parameter")))((("max_children parameter")))((("has_child query and filter", "min_children or max_children parameters"))) which will return the parent document only if the | ||
number of matching children is within the specified range. | ||
`has_child` 的 query 和 filter 都可以传这两个参数:`min_children` 和 `max_children` 。 ((("min_children parameter")))((("max_children parameter")))((("has_child query and filter", "min_children or max_children parameters"))) 使用这两个参数时,只有当父文档的子文档数量大于 `min_children` 或者小于 `max_children` 时,才会返回父文档。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 查询和过滤 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
|
||
This query will match only branches that have at least two employees: | ||
如下查询只会返回至少有两个雇员的分公司: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 和上面统一吧,要么分公司,要么分支机构,都OK There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
|
||
[source,json] | ||
------------------------- | ||
|
@@ -82,21 +68,14 @@ GET /company/branch/_search | |
} | ||
} | ||
------------------------- | ||
<1> A branch must have at least two employees in order to match. | ||
<1> 至少有两个雇员的分公司才会符合查询条件。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 同上,统一 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 都叫分公司了 |
||
|
||
The performance of a `has_child` query or filter with the `min_children` or | ||
`max_children` parameters is much the same as a `has_child` query with scoring | ||
enabled. | ||
带有 `has_child` 、 `min_children` 和 `max_children` 参数的 query 或者 filter,在性能上都没有显著差异。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 查询和过滤,同上 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
|
||
.has_child Filter | ||
************************** | ||
|
||
The `has_child` filter works((("has_child query and filter", "filter"))) in the same way as the `has_child` query, except | ||
that it doesn't support the `score_mode` parameter. It can be used only in | ||
_filter context_—such as inside a `filtered` query--and behaves | ||
like any other filter: it includes or excludes, but doesn't score. | ||
|
||
While the results of a `has_child` filter are not cached, the usual caching | ||
rules apply to the filter _inside_ the `has_child` filter. | ||
`has_child` filter 和 `has_child` query 在运行机制上类似,((("has_child query and filter", "filter")))区别是 `has_child` filter 不支持 `source_mode` 参数。`has_child` filter 只可以用在 filter 的上下文中(例如在 `filtered` query 中)并且和其他任何的 filter 一样:结果存在,或者不存在,并且没有评分机制。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 查询 过滤 这两个还是要翻译的,请都检查下。 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
|
||
`has_child` filter 本身的结果不可被缓存,但是其内部 filter 的结果是可以被缓存的。 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok,按照建议修改 |
||
************************** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
建议“根据”换成”通过“
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok,按照建议修改