Elasticsearch——动态映射

目录

Dynamic field mappings

date detection (日期检测)

Disabling date detection (禁用日期检测)

Customizing detected date formats (自定义检测到的日期格式)

Numeric detection (数字检测)

Dynamic templates

验证动态模板

在动态模板映射运行时字段


Elasticsearch最重要的功能之一就是它会尽量避开我们的视线,让我们尽快开始探索我们的数据。要为文档编制索引,不必首先创建索引、定义映射类型和定义字段 — 我们只需为文档编制索引,索引、类型和字段将自动显示:

PUT data/_doc/1 
{ "count": 5 }

创建data索引、_doc映射类型和名为count且数据类型为long的字段。

自动检测和添加新字段称为动态映射。动态映射规则可以通过以下方式进行自定义以满足我们的目的:

Dynamic field mappings

    管理动态字段发现的规则。

    当Elasticsearch在文档中检测到一个新字段时,它会在默认情况下动态地将该字段添加到类型映射中。动态参数控制此行为。

    通过将动态参数设置为true或runtime,可以显式指示Elasticsearch基于传入文档动态创建字段。启用动态字段映射后,Elasticsearch使用下表中的规则来确定如何映射每个字段的数据类型。

下表中的字段数据类型是Elasticsearch动态检测的唯一字段数据类型。必须显式映射所有其他数据类型

JSON data type

"dynamic":"true"

"dynamic":"runtime"

null

No field added

No field added

true or false

boolean

boolean

double

float

double

integer

long

long

object1

object

object

array

Depends on the first non-null value in the array

Depends on the first non-null value in the array

string that passes date detection

date

date

string that passes numeric detection

float or long

double or long

string that doesn’t pass date detection or numeric detection

text with a .keyword sub-field

keyword

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值