Elasticsearch Mapping parameters(主要参数一览)

2、相反,如果在查询时指定boost值,每一个查询都可以使用不同的boost值,灵活。

3、在索引中指定boost值,boost存储在记录中,从而会降低分数计算的质量。

  • coerce

是否进行类型“隐式转换”。es最终存储文档的格式是字符串。

例如存在如下字段类型:

“number_one”: {

“type”: “integer”

}

声明number_one字段的类型为数字类型,那是否允许接收“6”字符串形式的数据呢?因为在JSON中,“6”用来赋给int类型的字段,也是能接受的,默认coerce为true,表示允许这种赋值,但如果coerce设置为false,此时es只能接受不带双引号的数字,如果在coerce=false时,将“6”赋值给number_one时会抛出类型不匹配异常。

可以在创建索引时指定默认的coerce值,示例如下:

PUT my_index

{

“settings”: {

“index.mapping.coerce”: false

},

“mappings”: {

// 省略字段映射定义

}

}

  • copy_to

copy_to参数允许您创建自定义的_all字段。换句话说,多个字段的值可以复制到一个字段中例如,first_name和last_name字段可以复制到full_name字段如下:

PUT my_index

{

“mappings”: {

“_doc”: {

“properties”: {

“first_name”: {

“type”: “text”,

“copy_to”: “full_name”

},

“last_name”: {

“type”: “text”,

“copy_to”: “full_name”

},

“full_name”: {

“type”: “text”

}

}

}

}

}

表示字段full_name的值来自 first_name + last_name。

关于copy_to重点说明:

1、字段的复制是原始值,而不是分词后的词根。

2、复制字段不会包含在_souce字段中,但可以使用复制字段进行查询。

3、同一个字段可以复制到多个字段,写法如下:“copy_to”: [ “field_1”, “field_2” ]

  • doc_values

当需要对一个字段进行排序时,es需要提取匹配结果集中的排序字段值集合,然后进行排序。倒排索引的数据结构对检索来说相当高效,但对排序就不那么擅长了。

业界对排序、聚合非常高效的数据存储格式首推列式存储,在elasticsearch中,doc_values就是一种列式存储结构,默认情况下绝大多数数据类型都是开启的,即在索引时会将字段的值(或分词后的词根序列)加入到倒排索引中,同时也会该字段的值加入doc_values中,所有该类型的索引下该字段的值用一列存储。

doc_values的使用示例:

PUT my_index

{

“mappings”: {

“_doc”: {

“properties”: {

“status_code”: {

“type”: “keyword” // 默认情况下,“doc_values”:true

},

“session_id”: {

“type”: “keyword”,

“doc_values”: false

}

}

}

}

}

  • dynamic

是否允许动态的隐式增加字段。在执行index api或更新文档API时,对于_source字段中包含一些原先未定义的字段采取的措施,根据dynamic的取值,会进行不同的操作:

  1. true,默认值,表示新的字段会加入到类型映射中。

  2. false,新的字段会被忽略,即不会存入_souce字段中,即不会存储新字段,也无法通过新字段进行查询。

  3. strict,会显示抛出异常,需要新使用put mapping api先显示增加字段映射。

dynamic设置为false,也是可以通过put mapping ap

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值