天天看点

Elasticsearch - 模式映射之核心类型

模式映射用于定义索引结构。在建立mapping映射时需要指定字段的类型,以下详细介绍mapping属性常见字段类型。

每个字段类型可以指定为ElasticSearch中某个特定的核心类型。ElasticSearch的核心类型如下:

1)字符串类型

2)数值类型

3)日期型

4)布尔型

5)二进制型

首先介绍一下通用属性。

index_name:该属性是存储在索引中的字段名称。如果未指定,则默认为字段定义的对象的名称。通常忽略该属性。

index:该属性的取值可为analyzed或no,如果为analyzed,则该字段将被索引,因而是可以搜索的;如果为no,则该字段不可被搜索。默认值是analyzed。字符串型的字段有一个额外的选项--not_analyzed,意思是该字段会被索引但不需要分析。因此,该字段按原样写入索引,只有完全匹配的搜索才能查到该字段。

store:该属性的取值可以为yes或no,用于指定字段的原始值是否存入索引。默认值是no,意味着不能在结果中返回字段的原始值(没有原始值也可以通过_source字段返回原始值)

boost:该属性默认为1。用于定义该字段在文档中的重要性,值越高表示该字段的取值越重要。

null_value:该属性指定如果某字段在被索引的文档中不存在时应写入何值。默认行为是忽略该字段。

include_in_all:该属性指定某字段是否应被包含到_all字段中。默认情况下,如果启用_all字段则包含所有的字段。

一、字符串型

term_vector(词向量):该属性的取值可以为no(默认值)、yes、with_offsets、with_positions、with_positions_offsets。该属性表示是否对该字段计算lucene词向量,如果使用的是高亮则需要计算词向量。

omit_norms:取值可以为true或false,默认是false,如果为true则禁用该字段的lucene norms计算,则不能使用索引时加权。

omit_term_freq_and_positions:该属性的取值可为true或false,默认为false。若想建立索引时忽略词频和位置的计算,可将属性设为true。(0.20版本以后开始弃用)

index_options:用于设置索引选项。可能的取值是docs(索引文档的数量)、freqs(索引的文档数量和词频)、positions(索引的文档数量、词频和单词出现位置)。默认值是freqs(从0.20版本开始可用)。

analyzer:用于索引和搜索的分析器名称,默认是全局定义的分析器。

index_analyzer:用于索引的分析器的名称。

search_analyzer:用于处理作用在该字段的查询的分析器的名称。

ignore_above:字段的最大长度,超出指定长度的部分会被忽略。如果只关心字段的前N个字符,则该属性非常有用。

二、数值型

precision_step:该属性设置为字段的每个取值生成的项数。值越低则生成的项数越多,进行range查询时就越快(但索引也会变大),默认值是4。

ignore_malformed:取值可以为true或false,默认值是false。若想要忽略格式错误的数值,则应该设置为true。

三、日期型

format:用于指定日期格式。默认值是dateOperationalTime。可选格式参考官方date-format.html文档

precision_step:该属性设置为字段的每个取值生成的项数。值越低则生成的项数越多,进行range查询时就越快(但索引也会变大),默认值是4。

ignore_malformed:取值可以为true或false,默认值是false。若想要忽略格式错误的数值,则应该设置为true。

四、布尔型:取值为true或false

五、二进制型(binary)

二进制字段是指用base64来表示索引中存储的二进制数据,可用来存储二进制形式的数据,例如图像。默认情况下,该类型的字段只存储不索引。二进制类型只支持index_name属性

继续阅读