Elasticsearch-Mapping(映射)
Elasticsearch-Mapping(映射)
Mapping是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和
索引的。
-
哪些字符串属性应该被看做全文本属性(fulltextfields)。
-
哪些属性包含数字,日期或者地理位置。
-
文档中的所有属性是否都能被索引(_all配置)。
-
日期的格式。
-
自定义映射规则来执行动态添加属性。
https://www.elastic.co/guide/en/elasticsearch/reference/7.11/mapping.html
一、字段类型
大概有如下字段类型
二、映射
1、查看索引的Mapping映射
GET bank/_mapping
2、创建映射
PUT /my_index
{
"mappings": {
"properties": {
"age":{"type":"integer"},
"email":{"type":"keyword"},
"name":{"type":"text"}
}
}
}
#创建索引并且指定映射,因为在Elastic中废除了type的概念,所以没有指定Type。在Elastic简介中讲了为什么废除Type
3、添加新的字段映射
PUT my_index/_mapping
{
"properties":{
"employee-id":{
"type":"keyword",
"index":false
}
}
}
#注 "index":false,意思是说该字段不被检索,默认是true
4、更新映射
对于已经存在的映射字段,我们不能更新。更新必须创建新的正确的索引,然后在进行数据迁移
https://www.elastic.co/guide/en/elasticsearch/reference/7.x/explicit-mapping.html#update-mapping
5、数据迁移
POST _reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
因为Elastic在7.X之后去掉了Type,可以这样进行迁移
POST reindex
{
"source":{
"index":"twitter",
"type":"twt"
},
"dest":{
"index":"new_twitters"
}
}