《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.10.Dynamic Mapping(1) https://developer.aliyun.com/article/1230520
1、#1 处的配置索引test-dynamic-mapping整体是不自动增加字段的。
2、#2 处对于内嵌对象person我们设置它可以自动发现字段。
3、#3 处对于内嵌对象company我们设置它发现新字段会报错。
# 插入文档 PUT test-dynamic-mapping/_doc/1 { "school":"test school", # 1 "person":{ "name":"tom", "age":"12" # 2 }, "company":{ "company_id":"c001" } }
4、传入文档的根层有个未定义的school字段。
5、在 person 对象中增加 age 字段。
# 再次查看索引mapping GET test-dynamic-mapping { "test-dynamic-mapping" : { "mappings" : { "dynamic" : "false", "properties" : { # 1 "company" : { 447 > 三、产品能力 "dynamic" : "strict", "properties" : { "company_id" : { "type" : "keyword" } } }, "person" : { "dynamic" : "true", "properties" : { "name" : { "type" : "keyword" }, "age" : { # 2 "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } } } ……………… } }
6、#1 处由于我们对整个 mapping 设置了dynamic:false,所以school属性没有自动创建。
7、由于内嵌对象person的dynamic:true,因此自动增加了sex属性,该属性派生出 2 个字段索引person.age其字段类型是text以及person.age.keyword其字段类型是keyword。
# 再次查看索引 mapping GET test-dynamic-mapping { "test-dynamic-mapping" : { "mappings" : { "dynamic" : "false", "properties" : { # 1 "company" : { "dynamic" : "strict", "properties" : { "company_id" : { "type" : "keyword" } } }, "person" : { "dynamic" : "true", "properties" : { "name" : { "type" : "keyword" }, "age" : { # 2 "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } } } ……………… } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.10.Dynamic Mapping(3) https://developer.aliyun.com/article/1230517