一般情况下我感觉很少用单纯的动态映射,除非业务简单。一般也是用动态映射模板和静态映射。
默认情况下动态映射是打开的,可以通过设置索引参数为false(忽略新field)或者strict(遇到未知field抛出异常~嗯-官方是这么写的)
通过_settings去获取默认的配置
GET /index(可缺省)/_settings(缺省的话默认是全部的index)
{
"xx-2018.06.23": {
"settings": {
"index": {
"creation_date": "1531274469467",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "TrIbNCbPSe2Jq86FN0QScw",
"version": {
"created": "6030099"
},
"provided_name": "xx-2018.06.23"
}
}
}
好吧,好像看起来没啥东西~~!
有些书上写的_default_
,已经在6.0.x上删除~没有意义
如果启用了date_detection(默认),那么将检查新的字符串字段,看看它们的内容是否与dynamic_date_format中指定的任何日期模式匹配。如果找到匹配项,则添加一个具有相应格式的新日期字段默认格式是这样的
当然是6.3版本的~
[ "strict_date_optional_time"
,"yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"
]
贴出官方示例
PUT my_index/_doc/1
{
"create_date": "2015/09/02"
}
GET my_index/_mapping
结果
{
"my_index": {
"mappings": {
"_doc": {
"properties": {
"create_date": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
}
}
}
}
}
}
禁用日期检查
PUT my_index
{
"mappings": {
"_doc": {
"date_detection": false
}
}
}
PUT my_index/_doc/1
{
"create": "2015/09/02"
}
GET my_index/_mapping
结果
{
"my_index": {
"mappings": {
"_doc": {
"date_detection": false,
"properties": {
"create": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
已经变成了text格式了
修改动态映射日期的格式
PUT my_index
{
"mappings": {
"_doc": {
"dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss"]
}
}
}
PUT my_index/_doc/1
{
"create": "2018-07-16 12:11:00"
}
GET my_index/_mapping
对于数字的动态映射检查是关闭的(OK ,附上官方示例)
PUT my_index
{
"mappings": {
"_doc": {
"numeric_detection": true
}
}
}
PUT my_index/_doc/1
{
"my_float": "1.0",
"my_integer": "1"
}
网友评论