elasticsearch之mapping详解和数据类型
一、mapping介绍
- 类似数据库中的表结构定义,主要作用如下:
- 定义 index 下的字段名(Field name)
- 定义字段的类型,比如 数值型,字符串型,布尔型等
- 定义倒排索引的相关配置,比如是的索引、是否记录position 等
二、常用mapping 相关api
1、获取索引 mapping
请求:GET XXX-INDEX/_mapping
响应:
{
"test": {
"mappings": {
"doc": {
"properties": {
"id": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
三、自定义mapping
1、dynamic 参数
通过dynamic 参数可以控制字段的新增功能。
- true(默认)允许自动新增字段
- false不允许自动新增字段,但是文档可以正常写入,但是无法对字段进行查询等操作
- strict文档不能写入,插入时会直接报错
如:
1、设置 dynamic 参数
PUT test_index
{
"mappings": {
"doc": {
"dynamic": false,
"properties": {
"user": {
"type": "text"
}
}
}
}
}
2、新增一条数据
PUT test_index/doc/1
{
"user": "qianmeng",
"age": 18 // 此字段是新增的,此时 dynamic是false,我们验证其可插入但不可查询的功能
}
3、查看mapping
GET test_index/_mapping
结果是:
{
"test_index": {
"mappings": {
"doc": {
"dynamic": "false",
"properties": {
"user": {
"type": "text"
}
}
}
}