Skip to content

Commit 33efbd2

Browse files
committed
Fix format
1 parent 83f8819 commit 33efbd2

File tree

6 files changed

+68
-90
lines changed

6 files changed

+68
-90
lines changed

402_Nested/30_Nested_objects.md

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
[[巢状-对象]]
2-
== 巢状对象
1+
## 嵌套-对象
2+
### 嵌套对象
33

4-
事实上在Elasticsearch中,创建丶删除丶修改一个文档是是原子性的,因此我们可以在一个文档中储存密切关联的实体。
5-
((("nested objects")))((("objects", "nested"))) 举例来说,我们可以在一个文档中储存一笔订单及其所有内容,或是储存一个Blog文章及其所有回应,藉由传递一个`comments`阵列:
4+
事实上在Elasticsearch中,创建丶删除丶修改一个文档是是原子性的,因此我们可以在一个文档中储存密切关联的实体。举例来说,我们可以在一个文档中储存一笔订单及其所有内容,或是储存一个Blog文章及其所有回应,藉由传递一个`comments`阵列:
65

7-
[source,json]
8-
--------------------------
6+
```json
97
PUT /my_index/blogpost/1
108
{
119
"title": "Nest eggs",
@@ -28,15 +26,14 @@ PUT /my_index/blogpost/1
2826
}
2927
]
3028
}
31-
--------------------------
32-
<1> 如果我们依靠动态映射 <<dynamic-mapping,dynamic mapping>>`comments`栏位会被自动建立为一个`object`栏位。
29+
```
30+
<1> 如果我们依靠动态映射,`comments`栏位会被自动建立为一个`object`栏位。
3331

3432
因为所有内容都在同一个文档中,使搜寻时并不需要连接(join)blog文章与回应,因此搜寻表现更加优异。
3533

3634
问题在於以上的文档可能会如下所示的匹配一个搜寻:
3735

38-
[source,json]
39-
--------------------------
36+
```json
4037
GET /_search
4138
{
4239
"query": {
@@ -48,14 +45,12 @@ GET /_search
4845
}
4946
}
5047
}
51-
--------------------------
48+
```
5249
<1> Alice是31岁,而不是28岁!
5350

54-
造成跨对象配对的原因如同我们在对象阵列 <<object-arrays>>中所讨论到,在於我们优美结构的JSON文档((("documents")))((("JSON documents")))
55-
在索引中被扁平化为下方的 键-值形式:
51+
造成跨对象配对的原因如同我们在对象阵列中所讨论到,在于我们优美结构的JSON文档在索引中被扁平化为下方的 键-值 形式:
5652

57-
[source,json]
58-
--------------------------
53+
```json
5954
{
6055
"title": [ eggs, nest ],
6156
"body": [ making, money, work, your ],
@@ -66,17 +61,16 @@ GET /_search
6661
"comments.stars": [ 4, 5 ],
6762
"comments.date": [ 2014-09-01, 2014-10-22 ]
6863
}
69-
--------------------------
64+
```
7065

7166
`Alice``31` 以及 `John``2014-09-01` 之间的关联已经无法挽回的消失了。
72-
`object`类型的栏位(参考内部对象<<inner-objects>>)用於储存_单一_对象是非常有用的
67+
`object`类型的栏位用于储存_单一_对象是非常有用的
7368
从搜寻的角度来看,对於排序一个对象阵列来说关联是不需要的东西。
7469

75-
这是_巢状对象_被设计来解决的问题。 藉由映射`commments`栏位为`nested`类型而不是`object`类型,
76-
每个巢状对象会被索引为一个_隐藏分割文档_,例如:
70+
这是_嵌套对象_被设计来解决的问题。 藉由映射`commments`栏位为`nested`类型而不是`object`类型,
71+
每个嵌套对象会被索引为一个_隐藏分割文档_,例如:
7772

78-
[source,json]
79-
--------------------------
73+
```json
8074
{ <1>
8175
"comments.name": [ john, smith ],
8276
"comments.comment": [ article, great ],
@@ -96,16 +90,16 @@ GET /_search
9690
"body": [ making, money, work, your ],
9791
"tags": [ cash, shares ]
9892
}
99-
--------------------------
100-
<1> 第一个`巢状`对象
101-
<2> 第二个`巢状`对象
102-
<3> _根_或是父文档
93+
```
94+
<1> 第一个`嵌套`对象
95+
<2> 第二个`嵌套`对象
96+
<3> 根或是父文档
10397

104-
藉由分别索引每个巢状对象,对象的栏位中保持了其关联。 我们的查询可以只在同一个巢状对象都匹配时才回应
98+
藉由分别索引每个嵌套对象,对象的栏位中保持了其关联。 我们的查询可以只在同一个嵌套对象都匹配时才回应
10599

106-
不仅如此,因巢状对象都被索引了,连接巢状对象至根文档的查询速度非常快--几乎与查询单一文档一样快。
100+
不仅如此,因嵌套对象都被索引了,连接嵌套对象至根文档的查询速度非常快--几乎与查询单一文档一样快。
107101

108-
这些额外的巢状对象被隐藏起来,我们无法直接访问他们。 为了要新增丶修改或移除一个巢状对象,我们必须重新索引整个文档。
109-
要牢记搜寻要求的结果并不是只有巢状对象,而是整个文档。
102+
这些额外的嵌套对象被隐藏起来,我们无法直接访问他们。 为了要新增丶修改或移除一个嵌套对象,我们必须重新索引整个文档。
103+
要牢记搜寻要求的结果并不是只有嵌套对象,而是整个文档。
110104

111105

402_Nested/31_Nested_mapping.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
[[巢状-映射]]
2-
=== 巢状对象映射
1+
##嵌套-映射
2+
### 嵌套对象映射
33

4-
设定一个`nested`栏位很简单--在((("mapping (types)", "nested object")))((("nested object mapping")))你会设定为`object`类型的地方,改为`nested`类型:
4+
设定一个`nested`栏位很简单--在你会设定为`object`类型的地方,改为`nested`类型:
55

6-
[source,json]
7-
--------------------------
6+
```json
87
PUT /my_index
98
{
109
"mappings": {
@@ -24,9 +23,9 @@ PUT /my_index
2423
}
2524
}
2625
}
27-
--------------------------
26+
```
2827
<1> 一个`nested`栏位接受与`object`类型相同的参数。
2928

30-
所需仅此而已。 任何`comments`对象会被索引为分离巢状对象
31-
参考更多 http://bit.ly/1KNQEP9[`nested` type reference docs]
29+
所需仅此而已。 任何`comments`对象会被索引为分离嵌套对象
30+
参考更多 [`nested` type reference docs](http://bit.ly/1KNQEP9)
3231

402_Nested/32_Nested_query.md

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
[[巢状-查询]]
2-
=== 查询巢状对象
1+
## 嵌套-查询
2+
### 查询嵌套对象
33

4-
因巢状对象((("nested objects", "querying")))会被索引为分离隐藏文档,我们不能直接查询它们。
5-
((("queries", "nested"))) 而是使用 http://bit.ly/1ziFQoR[`nested`查询]http://bit.ly/1IOp94r[`nested` 过滤器]来存取它们:
4+
因嵌套对象(nested objects)会被索引为分离的隐藏文档,我们不能直接查询它们。而是使用 [`nested`查询](http://bit.ly/1ziFQoR)[`nested` 过滤器](http://bit.ly/1IOp94r)来存取它们:
65

7-
[source,json]
8-
--------------------------
6+
```json
97
GET /my_index/blogpost/_search
108
{
119
"query": {
@@ -24,27 +22,21 @@ GET /my_index/blogpost/_search
2422
}}}}
2523
]
2624
}}}
27-
--------------------------
25+
```
2826
<1> `title`条件运作在根文档上
29-
<2> `nested`条件``深入``巢状的`comments`栏位。
30-
它不会在存取根文档的栏位,或是其他巢状文档的栏位。
31-
<3> `comments.name`以及`comments.age`运作在相同的巢状文档。
27+
<2> `nested`条件``深入``嵌套的`comments`栏位。它不会在存取根文档的栏位,或是其他嵌套文档的栏位。
28+
<3> `comments.name`以及`comments.age`运作在相同的嵌套文档。
3229

33-
[TIP]
34-
==================================================
30+
>### TIP
31+
>一个`nested`栏位可以包含其他`nested`栏位。 相同的,一个`nested`查询可以包含其他`nested`查询。
32+
嵌套阶层会如同你预期的运作。
3533

36-
一个`nested`栏位可以包含其他`nested`栏位。 相同的,一个`nested`查询可以包含其他`nested`查询。
37-
巢状阶层会如同你预期的运作。
38-
39-
==================================================
40-
41-
当然,一个`nested`查询可以匹配多个巢状文档。
34+
当然,一个`nested`查询可以匹配多个嵌套文档。
4235
每个文档的匹配会有各自的关联分数,但多个分数必须减少至单一分数才能应用至根文档。
4336

44-
在预设中,它会平均所有巢状文档匹配的分数。这可以藉由设定`score_mode`参数为`avg`, `max`, `sum`或甚至`none`(为了防止根文档永远获得`1.0`的匹配分数时)来控制。
37+
在预设中,它会平均所有嵌套文档匹配的分数。这可以藉由设定`score_mode`参数为`avg`, `max`, `sum`或甚至`none`(为了防止根文档永远获得`1.0`的匹配分数时)来控制。
4538

46-
[source,json]
47-
--------------------------
39+
```json
4840
GET /my_index/blogpost/_search
4941
{
5042
"query": {
@@ -64,14 +56,11 @@ GET /my_index/blogpost/_search
6456
}}}}
6557
]
6658
}}}
67-
--------------------------
68-
<1> 从最匹配的巢状文档中给予根文档的`_score`值。
59+
```
60+
<1> 从最匹配的嵌套文档中给予根文档的`_score`值。
6961

70-
[注意]
71-
====
72-
`nested`过滤器类似於`nested`查询,除了无法使用`score_mode`参数。 只能使用在_filter context_&#x2014;例如在`filtered`查询中--其作用类似其他的过滤器:
62+
>### 注意
63+
>`nested`过滤器类似於`nested`查询,除了无法使用`score_mode`参数。 只能使用在_filter context_&#x2014;例如在`filtered`查询中--其作用类似其他的过滤器:
7364
包含或不包含,但不评分。
7465

75-
`nested`过滤器的结果本身不会缓存,通常缓存规则会被应用於`nested`过滤器_之中_的过滤器。
76-
====
77-
66+
>`nested`过滤器的结果本身不会缓存,通常缓存规则会被应用於`nested`过滤器_之中_的过滤器。

402_Nested/33_Nested_sorting.md

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
[[巢状排序]]
2-
=== 以巢状栏位排序
1+
## 嵌套排序
2+
### 以嵌套栏位排序
33

4-
我们可以依照巢状栏位中的值来排序,甚至藉由分离巢状文档中的值。((("nested fields, sorting by")))((("sorting", "by nested fields")))
5-
为了使其结果更加有趣,我们加入另一个记录:
4+
我们可以依照嵌套栏位中的值来排序,甚至藉由分离嵌套文档中的值。为了使其结果更加有趣,我们加入另一个记录:
65

7-
[source,json]
8-
--------------------------
6+
```json
97
PUT /my_index/blogpost/2
108
{
119
"title": "Investment secrets",
@@ -28,13 +26,12 @@ PUT /my_index/blogpost/2
2826
}
2927
]
3028
}
31-
--------------------------
29+
```
3230

3331
想像我们要取回在十月中有收到回应的blog文章,并依照所取回的各个blog文章中最少`stars`数量的顺序作排序。
3432
这个搜寻请求如下:
3533

36-
[source,json]
37-
--------------------------
34+
```json
3835
GET /_search
3936
{
4037
"query": {
@@ -65,12 +62,11 @@ GET /_search
6562
}
6663
}
6764
}
68-
--------------------------
65+
```
6966
<1> `nested`查询限制了结果为十月份收到回应的blog文章。
7067
<2> 结果在所有匹配的回应中依照`comment.stars`栏位的最小值(`min`)作递增(`asc`)的排序。
7168
<3> 排序条件中的`nested_filter`与主查询`query`条件中的`nested`查询相同。 於下一个下方解释。
7269

73-
为什麽我们要在`nested_filter`重复写上查询条件? 原因是排序在於执行查询後才发生
70+
为什么我们要在`nested_filter`重复写上查询条件? 原因是排序在於执行查询后才发生
7471
此查询匹配了在十月中有收到回应的blog文章,回传blog文章文档作为结果。
7572
如果我们不加上`nested_filter`条件,我们最後会依照任何blog文章曾经收到过的回应作排序,而不是在十月份收到的。
76-

SUMMARY.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,12 +265,12 @@
265265
* [Top hits](400_Relationships/22_Top_hits.md)
266266
* [Concurrency](400_Relationships/25_Concurrency.md)
267267
* [Concurrency solutions](400_Relationships/26_Concurrency_solutions.md)
268-
* [巢状](402_Nested/00_Intro.md)
269-
* [巢状对象](402_Nested/30_Nested_objects.md)
270-
* [巢状映射](402_Nested/31_Nested_mapping.md)
271-
* [巢状查询](402_Nested/32_Nested_query.md)
272-
* [巢状排序](402_Nested/33_Nested_sorting.md)
273-
* [巢状集合](402_Nested/35_Nested_aggs.md)
268+
* [嵌套](402_Nested/00_Intro.md)
269+
* [嵌套对象](402_Nested/30_Nested_objects.md)
270+
* [嵌套映射](402_Nested/31_Nested_mapping.md)
271+
* [嵌套查询](402_Nested/32_Nested_query.md)
272+
* [嵌套排序](402_Nested/33_Nested_sorting.md)
273+
* [嵌套集合](402_Nested/35_Nested_aggs.md)
274274
* [Parent Child](404_Parent_Child/00_Intro.md)
275275
* [Parent child](404_Parent_Child/40_Parent_child.md)
276276
* [Indexing parent child](404_Parent_Child/45_Indexing_parent_child.md)

TOC.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@
123123
* [查询地理形状](340_Geoshapes/76_Querying_geo_shapes.md)
124124
* [在查询中使用已索引的形状](340_Geoshapes/78_Indexed_geo_shapes.md)
125125
* [地理形状的过滤与缓存](340_Geoshapes/80_Caching_geo_shapes.md)
126-
* [巢状](402_Nested/00_Intro.md)
127-
* [巢状对象](402_Nested/30_Nested_objects.md)
128-
* [巢状映射](402_Nested/31_Nested_mapping.md)
129-
* [巢状查询](402_Nested/32_Nested_query.md)
130-
* [巢状排序](402_Nested/33_Nested_sorting.md)
131-
* [巢状集合](402_Nested/35_Nested_aggs.md)
126+
* [嵌套](402_Nested/00_Intro.md)
127+
* [嵌套对象](402_Nested/30_Nested_objects.md)
128+
* [嵌套映射](402_Nested/31_Nested_mapping.md)
129+
* [嵌套查询](402_Nested/32_Nested_query.md)
130+
* [嵌套排序](402_Nested/33_Nested_sorting.md)
131+
* [嵌套集合](402_Nested/35_Nested_aggs.md)

0 commit comments

Comments
 (0)