目录
Disabling date detection (禁用日期检测)
Customizing detected date formats (自定义检测到的日期格式)
Elasticsearch最重要的功能之一就是它会尽量避开我们的视线,让我们尽快开始探索我们的数据。要为文档编制索引,不必首先创建索引、定义映射类型和定义字段 — 我们只需为文档编制索引,索引、类型和字段将自动显示:
PUT data/_doc/1
{ "count": 5 }
创建data索引、_doc映射类型和名为count且数据类型为long的字段。
自动检测和添加新字段称为动态映射。动态映射规则可以通过以下方式进行自定义以满足我们的目的:
Dynamic field mappings
管理动态字段发现的规则。
当Elasticsearch在文档中检测到一个新字段时,它会在默认情况下动态地将该字段添加到类型映射中。动态参数控制此行为。
通过将动态参数设置为true或runtime,可以显式指示Elasticsearch基于传入文档动态创建字段。启用动态字段映射后,Elasticsearch使用下表中的规则来确定如何映射每个字段的数据类型。
下表中的字段数据类型是Elasticsearch动态检测的唯一字段数据类型。必须显式映射所有其他数据类型
JSON data type |
|
|
|
No field added |
No field added |
|
|
|
|
|
|
|
|
|
|
|
|
|
Depends on the first non- |
Depends on the first non- |
|
|
|
|
|
|
|
|
|
object始终映射为properties部分的一部分,即使动态参数设置为runtime。
我们可以在document和object级别禁用动态映射。将动态参数设置为false将忽略新字段,如果Elasticsearch遇到未知字段,strict将拒绝文档。
使用更新映射API更新现有字段的动态设置。
可以自定义用于日期检测和数字检测的动态字段映射规则。要定义可应用于其他动态字段的自定义映射规则,请使用动态模板(dynamic templates)。
date detection (日期检测)
如果启用了日期检测(默认),则会检查新的字符串字段,以查看其内容是否与dynamic_date_formats中指定的任何日期模式匹配。如果找到匹配项,则会使用相应的格式添加一个新的日期字段。
dynamic_date_formats 默认值是:
[ "strict_date_optional_time"
,"yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"
]
例如:
PUT my-index-000001/_doc/1
{
"create_date": "2015/09/02"
}
GET my-index-000001