1、什么是映射
映射:创建索引的时候,预先定义字段的类型及相关属性
作用:这样会让索引建立的更加细致和完善,如:是否存储、使用何种分析器、重要级别
分类:静态映射和动态映射
2、字段类型:string、integer、long、float、double、boolean、date、binary
3、除了可以定义字段的类型意外,还可以定义字段的属性
store:yes存储,no不存储,默认是no
index:是否索引这个字段,anlyzed、not_anlyzed、或no,只有string类型可以设置索引
null_value:如果字段是空,可以设置一个默认值
boost:设置字段的权值,默认是1.0,如:书名(2.0),作者(1.0),检索时书名结果就靠前
index_analyzer:设置索引时用的分析器
search_analyzer:设置搜索时用的分析器
analyzer:分析器用于分词,默认standard(支持大多数欧洲语言),还可以设置whitespace(基于空格分词)、simple(基于非字母,并转换成小写)、english(英文分析器),
include_in_all:保证每个字段被搜索到,include_in_all=false,不然被搜索到
index_name:定义字段的名称,默认是字段本身的名字
norms:analyzed字段例,值有意义(true、not_analyzed=false)
4、动态映射:
文档中碰到以前没有见过的的字段时,动态映射决定该字段的类型,并自动添加映射
通过dynamic属性控制(true:默认值,动态添加字段;false:忽略新字段;strict:碰到新字段,抛出异常)
适用范围:跟对象或object类型的任意字段上。
5、示例
# 静态映射
POST /library
{
"settings":{
"number_of_shards":5,
"number_of_relicas":1
},
"mappings" :{
“books”:{
“properties”:{
“title”:{"type":"string"},
“name”:{"type":"string","index":"not_analyzed"},
“publish_date”:{"type":"date","index":"not_analyzed"},
“price”:{"type":"double"},
“number”:{"type":"integer"}
}
}
}
}
# 动态映射
PUT /library
{
"mappings" :{
“books”:{
"dynamic“:”strict“,
“properties”:{
“title”:{"type":"string"},
“name”:{"type":"string","index":"not_analyzed"},
“publish_date”:{"type":"date","index":"not_analyzed"},
“price”:{"type":"double"},
“number”:{
"type":"integer",
"dynamic":"true"
}
}
}
}
}
6、获取映射信息
GET /library/_mapping
GET /library/_mapping/books
GET /all/_mapping
GET /all/_mapping/books,bank_account
7、更新映射信息:
重新建立索引,重新定义映射,导入原有映射数据
具体步骤如下:
a、现有索引,建立别名
PUT /现有索引/_alias/别名A
b、建立新索引,定义好映射,别名指向新索引
c、删除老的索引,取消之前索引的指向
POST /_alias
{
"actions":{
{ "remove":{"index":"现有索引名",“alias”:“别名A”},
{ "add":{"index":"新建索引名",“alias”:“别名A”}
}
}
8、删除映射
DELETE /library/books
DELETE /library/books/_mapping
DELETE /library/_mapping/books,banks