版本:Elasticsearch 6.2.4。
Mapping类似于数据库中的表结构定义,主要作用如下:
- 定义Index下字段名(Field Name)
- 定义字段的类型,比如数值型,字符串型、布尔型等
- 定义倒排索引的相关配置,比如是否索引、记录postion等
Mapping完整的内容可以分为四部分内容:
- 字段类型(Field datatypes)
- 元字段(Meta-Fields)
- Mapping参数配置(Mapping parameters)
- 动态Mapping(Dynamic Mapping)
自动Mapping
如果没有手动设置Mapping,Elasticsearch默认会自动解析出类型,且每个字段以第一次出现的为准。
下面我们先看一下Elasticsearch默认创建的Mapping是什么样的。
首先我们创建一个索引:
PUT /user/查询索引信息:
GET /user结果:
{ "user": { "aliases": {}, "mappings": {}, "settings": { "index": { "creation_date": "1540044686190", "number_of_shards": "5", "number_of_replicas": "1", "uuid": "_K5b8w7jRiuthf7QeQZhdw", "version": { "created": "5060299" }, "provided_name": "user" } } } }增加一条数据:
PUT /user/doc/1 { "name":"Allen Yer", "job":"php", "age":22 } PUT /user/doc/2 { "name":"Allen Yer", "job":0, "age":22 }查询数据是否新增成功:
GET /user/doc/_count结果:
{ "count": 2, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 } }count为2,说明新增成功。然后我们查询下 mapping :
{ "user": { "mappings": { "doc": { "properties": { "age": { "type": "long" }, "job": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "name": { "type":
