官方文档
官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
映射是定义文档及其包含的字段如何存储和索引的过程。
每个文档都是字段的集合,每个字段都有自己的 数据类型。映射数据时,您创建一个映射定义,其中包含与文档相关的字段列表。映射定义还包括元数据字段(如 _source字段),它自定义文档关联元数据的处理方式。
使用动态映射
和显式映射
来定义数据。根据您在数据旅程中所处的阶段,每种方法都会提供不同的好处。例如,显式映射您不想使用默认值的字段,或者更好地控制创建哪些字段。然后,您可以允许 Elasticsearch 动态添加其他字段。
动态映射
动态映射
允许您在刚开始时尝试和探索数据。Elasticsearch 只需对文档建立索引即可自动添加新字段
。您可以将字段添加到顶级映射以及内部object 和nested字段。
使用动态模板定义自定义映射,这些映射将根据匹配条件应用于动态添加的字段。
动态字段映射
Elasticsearch 数据类型:
JSON 数据类型 | "dynamic":"true" | "dynamic":"runtime" |
---|---|---|
null | 未添加字段 | 未添加字段 |
true或者false | boolean | boolean |
double | float | double |
long | long | long |
object | object | 未添加字段 |
array | 取决于null数组中的第一个非值 | 取决于null数组中的第一个非值 |
string通过日期检测 | date | date |
string通过数字检测 | float或者long | double或者long |
string未通过date检测或numeric检测 | text有一个.keyword子字段 | keyword |
可以在文档和级别禁用动态映射 object。将参数设置dynamic为 false忽略新字段,或设置为strict在 Elasticsearch 遇到未知字段时拒绝文档。
dynamic: false
:当您在索引文档时将该参数设置为false时,Elasticsearch会忽略新字段的动态映射。这意味着新字段不会被自动检测和创建映射,只有已经存在的字段才会被索引。
PUT data/_mapping
{
"mappings": {
"dynamic": false, // 禁用动态映射
"properties": {
"MyDate": { "type": "date" },// 那么字段MyDate将会是date类型
"MyNumber": { "type": "string" }
}
}
}
日期检测
如果date_detection启用(默认),则检查新字符串字段以查看其内容是否与 中指定的任何日期模式匹配 dynamic_date_formats。如果找到匹配项,date则会添加具有相应格式的新字段。
默认值为 dynamic_date_formats
:
[ "strict_date_optional_time", "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]
例如现在随意添加一个字段,改字段为差不多的时间格式,当es不能匹配时,会自动转为其他类型格式,而如果格式能够匹配到内置的日期检测,将会转换为日期格式:
// 测试1:普通格式
POST data/_doc/3
{
"MyDate":"2023-10-22 22:20:30"
}
GET data/_mapping
// 测试2:符合时间格式的字段
POST data/_doc/3
{
"create_date":"2022/02/22" // yyyy/MM/dd
}
GET data/_mapping
当然在ES中也可以更换日期规则
参考官网
dynamic_date_formats
字段自定义
案例:
PUT my-index-000001
{ "mappings" : { "dynamic_date_formats" : [ "MM/dd/yyyy" ] } }
动态模板
动态模板允许您更好地控制 Elasticsearch 如何映射您的数据,超越默认的动态字段映射规则。true您可以通过将动态参数设置为或 来启用动态映射runtime。然后,您可以使用动态模板来定义自定义映射,这些映射可以根据匹配条件应用于动态添加的字段:
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html
标签:映射,dynamic,Mapping,Elasticsearch,date,文档,动态 From: https://www.cnblogs.com/zgf123/p/17980762