1. mapping
类似于数据库的schema的定义,mapping会把文档映射成lucene需要的扁平格式,一个mapping属于一个索引的type,一个type中有一个mapping定义,7.0后一个索引只有一个type,所以不需要在mapping中定义type的信息。作用如下:
定义索引这里面的字段和名称
定义字段的数据类型,字符串、布尔、数字......
字段,倒排索引相关的配置,是否分词。
1.1 字段的类型
简单类型
text/keyword,Date,Integer/Floating,Boolean,IPv4 &IPv6
复杂类型
对象类型/嵌套类型
特殊类型
geo_point & geo_shape/percolator(地理信息)
数组类型
ES不提供专门的数组类型,任何字段都可以包含多个相同类型的数值
2.Dynamic Mapping
写入文档的时候,索引不存在,会自动创建索引, 无需手动创建,ES会根据内容推断字段的类型,推断会不准确,可能造成某些功能无法使用,例如 范围查询。
查看一个索引当前的mapping
GET /movies/_mapping
{
"movies" : {
"mappings" : {
"properties" : {
"@version" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"genre" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"id" : {