Elasticsearch Dynamic Mapping动态映射策略-Part 2

Elasticsearch可以根据待索引数据自动建立索引、自动定义映射类型。

PUT data/_doc/1

{ "count": 5 }


一、动态字段映射(Dynamic field mappings)

动态字段映射规则。默认情况下,当在文档中发现未存在的字段时,Elasticsearch将使用动态映射机制为字段添加映射定义。通过将映射参数dynamic设置为false(忽略新字段)或strict(遇到未知字段时抛出异常),可以在文档和对象级别禁用此行为。


下面是类型关系对应表,其中JSON中integer类型对应Elasticsearch中的long类型。


二、日期类型检测(Date detection)

日期类型检测,如果启用了date_detection(默认),那么将检查新增的字符串字段,以查看它们的内容是否匹配dynamic_date_format中指定的任何日期模式。如果匹配其中任意一种格式,则添加字段映射时,字段的类型为date,并指定日期的format为匹配的模式。例如:

PUT data/_doc/2

{

"count": 5,

"create_date": "2020/03/20"

}


三、定制日期类型检测格式

可以通过类型级别(type)级别通过dynamic_date_formats参数来自定义日期检测格式,示例如下:

PUT data3

{

"mappings": {

"dynamic_date_formats": ["yyyy-MM-dd"]

}

}

插入一条文档数据:

PUT data3/_doc/1

{

"count": 5,

"create_date": "2020-03-20"

}


四、数字类型检测(numeric detection)

数字类型检测。如果数字类型的值在JSON中是用字符串表示的话,如果开启数字类型检测,同样在创建映射时会映射为数字类型,而不是字符串类型。

默认情况下,numeric_detection为false。

PUT data4

{

"mappings": {

"numeric_detection": true

}

}

插入一条文档数据:

PUT data4/_doc/1

{

"count": 5,

"no": "100"

}


分享到:


相關文章: