Es的mapping映射

Mapping:

Mapping 是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和
索引的。
比如,使用 mapping 来定义:

  1.  哪些字符串属性应该被看做全文本属性(full text fields)。
  2. 哪些属性包含数字,日期或者地理位置。
  3. 文档中的所有属性是否都能被索引(_all 配置)。
  4. 日期的格式。
  5. 自定义映射规则来执行动态添加属性。

Es7 及以上移除了 type 的概念。
关系型数据库中两个数据表示是独立的,即使他们里面有相同名称的列也不影响使用,
但 ES 中不是这样的。elasticsearch 是基于 Lucene 开发的搜索引擎,而 ES 中不同 type
下名称相同的 filed 最终在 Lucene 中的处理方式是一样的。
两个不同 type 下的两个 user_name,在 ES 同一个索引下其实被认为是同一个 filed,
你必须在两个不同的 type 中定义相同的 filed 映射。否则,不同 type 中的相同字段
名称就会在处理中出现冲突的情况,导致 Lucene 处理效率下降。
去掉 type 就是为了提高 ES 处理数据的效率。
Elasticsearch 7.x
URL 中的 type 参数为可选。比如,索引一个文档不再要求提供文档类型。
Elasticsearch 8.x
不再支持 URL 中的 type 参数。
解决:
1)、将索引从多类型迁移到单类型,每种类型文档一个独立索引
2)、将已存在的索引下的类型数据,全部迁移到指定位置即可。详见数据迁移

创建映射

1、创建索引并指定映射
PUT /my-index

{
  "mappings": {
    "properties": {
      "age":{"type": "integer"},
      "email":{"type": "keyword"},
      "name":{"type": "text"}
    }
  }
}

2、添加新的字段映射

{
  "properties": {
    "employee-id": {
      "type": "keyword",
      "index": false
    }
  }
}

index是是否参与索引的意思,默认为true。如果false则只是一个冗余存储可以理解为

已存在的映射是不可以更新的!!!但是可以用数据迁移的方式去更改

POST _reindex
{
  "source": {
    "index": "bank",
    "type": "account"
  },
  "dest": {
    "index": "newbank"
  }
}
这是老版本写法,因为老版本是有类型的,所以用type表示类型是什么然后到dest目的地下的新索引
新版本写法:
{
	"source": {
		"index": "bank"
	},
	"dest": {
		"index": "newbank"
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值