赞
踩
在Elasticsearch中,动态映射允许Elasticsearch根据插入文档的字段自动创建映射。以下是如何配置和使用Elasticsearch动态映射的实战步骤:
默认情况下,Elasticsearch是启用动态映射的。这意味着当你向索引中添加文档时,如果文档包含新的字段,Elasticsearch会自动检测该字段的数据类型并创建相应的映射。
你可以在索引级别控制动态映射的行为:
PUT /my_index { "mappings": { "dynamic": "true", // 默认值,自动创建新字段映射 // 其他映射配置... } } PUT /my_index { "mappings": { "dynamic": "false", // 禁止自动创建新字段映射,新字段将被忽略 // 其他映射配置... } } PUT /my_index { "mappings": { "dynamic": "strict", // 如果遇到未在映射中定义的新字段,则拒绝索引该文档 // 其他映射配置... } }
除了全局动态映射设置外,还可以针对特定字段定制动态映射规则:
PUT /my_index
{
"mappings": {
"properties": {
"regular_field": {
// 正常静态映射
},
"dynamic_field": {
"type": "text",
"dynamic": "true" // 这个字段及其子字段将允许动态映射
}
}
}
}
Elasticsearch根据字段内容自动推断数据类型。例如,如果字段内容看起来像日期,那么会被映射为date
类型;如果是数字,那么会被映射为相应类型的数字类型;如果是JSON对象或数组,将会被映射为object
或nested
类型。
PUT /my_index/_doc/1 { "title": "My first document", "created_at": "2022-01-01T12:00:00Z", "views": 100, "comments": [ { "author": "User A", "message": "Great post!" } ] } GET /my_index/_mapping // 返回的映射可能类似于: { "my_index": { "mappings": { "properties": { "title": { "type": "text" }, "created_at": { "type": "date", "format": "strict_date_time" }, "views": { "type": "long" }, "comments": { "type": "nested", "properties": { "author": { "type": "text" }, "message": { "type": "text" } } } } } } }
请注意,尽管动态映射提供了很大的灵活性,但在生产环境中,尤其是在对索引结构有严格要求的情况下,通常建议预先定义好明确的映射以确保数据的一致性和正确性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。