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"
}
閱讀更多 軟件架構 的文章