Elasticsearch mapping数据类型

Elasticsearch mapping数据类型教程

Elasticsearch 里面直接插入数据,Elasticsearch 会自动建立索引,同时建立其对应的 mapping,mapping 中就自动定义了每个 field 的数据类型。

不同的数据类型(比如说 text 和 date),可能有的是 exact value,有的是 full text。

exact value,在建立倒排索引的时候,分词的时候,是将整个值一起作为一个关键词建立到倒排索引中的;full text,会经历各种各样的处理,分词,normaliztion(时态转换,同义词转换,大小写转换),才会建立到倒排索引中。

同时呢,exact value 和 full text 类型的 field 就决定了,在一个搜索过来的时候,对 exact value field 或者是 full text field 进行搜索的行为也是不一样的,会跟建立倒排索引的行为保持一致;比如说 exact value 搜索的时候,就是直接按照整个值进行匹配,full text query string,也会进行分词和 normalization 再去倒排索引中去搜索。

可以用 es 的 dynamic mapping,让其自动建立 mapping,包括自动设置数据类型;也可以提前手动创建 index 的 mapping,自己对各个 field 进行设置,包括数据类型,包括索引行为,包括分词器,等等。

mapping,就是 index 的元数据,每个 index 都有一个自己的 mapping,决定了数据类型,建立倒排索引的行为,还有进行搜索的行为。

mapping数据类型

数据类型 说明
string 字符串
byte 字节类型
short 短整型
integer 整型
long 长整型
float 单精度浮点型
double 双精度浮点型
boolean 布尔类型
date 日期类型

dynamic mapping数据类型

数据类型 说明
true or false boolean
123 long
123.45 double
2017-01-01 date
“HaiCoder” string/text

Elasticsearch mapping数据类型总结

往 Elasticsearch 里面直接插入数据,Elasticsearch 会自动建立索引,同时建立其对应的 mapping,mapping 中就自动定义了每个 field 的数据类型。

不同的数据类型(比如说 text 和 date),可能有的是 exact value,有的是 full text。