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

    

05-11 09:37
查看更多