File tree Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Original file line number Diff line number Diff line change 1
1
## 多值字段字符串排序
2
2
3
- ` analyzed ` 字符串字段同时也是多值字段,在这些字段上排序往往得不到你想要的值。
3
+ > 译者注: ` 多值字段 ` 是指同一个字段在ES索引中可以有多个含义,即可使用多个分析器(analyser)进行分词与排序,也可以不添加分析器,保留原值。
4
+
5
+ 被分析器(analyser)处理过的字符称为` analyzed field ` (译者注:即已被分词并排序的字段,所有写入ES中的字段默认圴会被analyzed), ` analyzed ` 字符串字段同时也是多值字段,在这些字段上排序往往得不到你想要的值。
4
6
比如你分析一个字符 ` "fine old art" ` ,它最终会得到三个值。例如我们想要按照第一个词首字母排序,
5
7
如果第一个单词相同的话,再用第二个词的首字母排序,以此类推,可惜 ElasticSearch 在进行排序时
6
8
是得不到这些信息的。
7
9
8
10
当然你可以使用 ` min ` 和 ` max ` 模式来排(默认使用的是 ` min ` 模式)但它是依据` art ` 或者 ` old ` 排序,
9
11
而不是我们所期望的那样。
10
12
11
- 为了使一个string字段可以进行排序,它必须只包含一个词:即完整的` not_analyzed ` 字符串。
12
- 当然我们需要对字段进行全文本搜索的时候还必须使用 ` analyzed ` 。
13
+ 为了使一个string字段可以进行排序,它必须只包含一个词:即完整的` not_analyzed ` 字符串(译者注:未经分析器分词并排序的原字符串) 。
14
+ 当然我们需要对字段进行全文本搜索的时候还必须使用被 ` analyzed ` 标记的字段 。
13
15
14
16
在 ` _source ` 下相同的字符串上排序两次会造成不必要的资源浪费。
15
- 而我们想要的是一个字段中同时包含这两种索引方式。
16
- 现在我们介绍一个在所有核心字段类型上通用的参数 ` fields ` ,这样我们就可以改变它的mapping:
17
+ 而我们想要的是同一个字段中同时包含这两种索引方式,我们只需要改变索引(index)的mapping即可。
18
+ 方法是在所有核心字段类型上,使用通用参数 ` fields ` 对mapping进行修改。
19
+ 比如,我们原有mapping如下:
17
20
18
21
``` Javascript
19
22
" tweet" : {
You can’t perform that action at this time.
0 commit comments