elasticsearch Dynamic Mapping 和常见字段类型详解

广告位

Mapping Mapping 类似数据库的 schema 的定义,作用如下 定义索引中的字段名…

Mapping

Mapping 类似数据库的 schema 的定义,作用如下

  • 定义索引中的字段名称
  • 定义字段的数据类型,例如字符串,数字,布尔…
  • 字段,倒排索引的相关配置,(Analyzed or Not Analyzed,Analyzer)

Mapping 会把 JSON 文档映射称 Lucene 所需的扁平格式
一个 Mapping 属于一个索引的 Type

  • 每个文档都属于一个 Type
  • 一个 Type 有一个 Mapping 定义
  • 7.0 开始,不需要在 Mapping 定义指定 type 信息

字段的数据类型

简单类型

  • Text / Keyword
  • Date
  • Integer / Floating
  • Boolean
  • IPv4 & IPv6

复杂类型 – 对象和嵌套对象

  • 对象类型 / 嵌套类型

特殊类型

  • geo_point & geo_shape / percolator

Dynamic Mapping

在写入文档的时候,如果索引不存在,会自动创建索引

  • Dynamic Mapping 的机制,使得我们无需手动定义 Mappings。Elasticsearch
    会自动根据文档信息,推算出字段的类型
  • 但是会有时候推算不对。例如地理位置信息
  • 当类型如果设置不对时,会导致一些功能无法正常运行,例如 Range 查询
    elasticsearch Dynamic Mapping 和常见字段类型详解

类型的自动识别

elasticsearch Dynamic Mapping 和常见字段类型详解
//写入文档
PUT mapping_test/_doc/1
{
“firstName”:“Lee”,
“lastName”:“Crazy”,
“loginDate”:“2019-10-22T21:08:48”
}
//查看Mapping 文件
GET mapping_test/_mapping
{
“mapping_test” : {
“mappings” : {
“properties” : {
“firstName” : {
“type” : “text”,
“fields” : {
“keyword” : {
“type” : “keyword”,
“ignore_above” : 256
}
}
},
“lastName” : {
“type” : “text”,
“fields” : {
“keyword” : {
“type” : “keyword”,
“ignore_above” : 256
}
}
},
“loginDate” : {
“type” : “date”
}
}
}
}
}

墨遥

关于作者: 墨遥

为您推荐