《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.2.Schemaless(上) https://developer.aliyun.com/article/1230158
match_mapping_type
Match_mapping_type 是 JSON 解析器检测到的数据类型。 因为 JSON 不区分 long 与整数或 double 与浮点数,所以它总是选择更广泛的数据类型,例如 long 表示整数,double 表示浮点数。
使用通配符 (*) 匹配所有数据类型。
例如,如果我们想将所有整数字段映射为整数而不是长整数,并将所有字符串字段映射为 text 和 keyword ,我们可以使用以下模板:
PUT my-index-000001 { "mappings": { "dynamic_templates": [ { "integers": { "match_mapping_type": "long", "mapping": { "type": "integer" } } }, { "strings": { "match_mapping_type": "string", "mapping": { "type": "text", "fields": { "raw": { "type": "keyword", "ignore_above": 256 } } } } } ] } } PUT my-index-000001/_doc/1 { "my_integer": 5, (1) "my_string": "Some string" (2) }
1、my_integer 字段被映射为 integer。
2、my_string 字段被映射为 text 和 keyword 多字段类型。
match 和 unmatch
Match 参数使用模式来匹配字段名称,而 unmatch 使用模式来排除 match 匹配的字段。
Match_pattern 参数调整 match 参数的行为以支持完整的 Java 正则表达式匹配字段名称而不是简单的通配符。例如:
"match_pattern": "regex", "match": "^profit_\d+$"
以下示例匹配名称以 long_ 开头的所有字符串字段(以 _text 结尾的字符串字段除外)并将它们映射为长字段:
PUT my-index-000001 { "mappings": { "dynamic_templates": [ { "longs_as_strings": { "match_mapping_type": "string", "match": "long_*", "unmatch": "*_text", "mapping": { "type": "long" } } } ] } } PUT my-index-000001/_doc/1 { "long_num": "5", (1) "long_text": "foo" (2) }
1、long_num 字段被映射为 long。
2、long_text 字段使用默认字符串映射。
path_match 和 path_unmatch
path_match 和 path_unmatch 参数的工作方式与 match 和 unmatch 相同,但对字段的完整虚线路径进行操作,而不仅仅是最终名称,例如 some_object.*.some_field。
此示例将 name 对象中任何字段的值复制到顶级 full_name 字段,middle字段除外:
PUT my-index-000001 { "mappings": { "dynamic_templates": [ { "full_name": { "path_match": "name.*", "path_unmatch": "*.middle", "mapping": { "type": "text", "copy_to": "full_name } } } ] } } PUT my-index-000001/_doc/1 { "name": { "first": "John", "middle": "Winston", "last": "Lennon" } }
请注意,path_match 和 path_unmatch 参数除了叶字段外还匹配对象路径。 例如,索引以下文档将导致错误,因为 path_match 设置也匹配对象字段 name.title,它不能映射为文本:
PUT my-index-000001/_doc/2 { "name": { "first": "Paul", "last": "McCartney", "title": { "value": "Sir", "category": "order of chivalry" } } }