文章永久连接:https://tech.souyunku.com/?p=2276
索引中每个文档都有一个类型( type ) 。 每个类型拥有自己的映射 ( mapping )或者模式定义 (schema definition)
一个映射定义了字段类型,每个字段的数据类型,以及字段被 Elasticsearh 处理的方式。映射还用于设置关联到类型上的元数据
所以,从某些方面说,映射是存储在索引中的文档的大纲,或者说相当于数据库中的某个表的表结构
范例
例如下面这个请求,用于定义银行账户详情
POST http://localhost:9200/bankaccountdetails?pretty
请求正文
{
"mappings":{
"report":{
"properties":{
"name":{ "type":"text"},
"date":{ "type":"date"},
"balance":{ "type":"double"},
"liability":{ "type":"double"}
}
}
}
}
返回响应如下
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "bankaccountdetails"
}
字段类型
Elasticsearch 为文档中的字段提供了大量的数据类型支持。以下列出的数据类型都可以用来定义文档的字段类型
1、基础数据类型
Elasticsearch 几乎支持所有系统的基本数据类型
- 整型 ( integer )
- 长整型 ( long int )
- 双精度型 ( double )
- 短整型 ( short int )
- 字节型 ( byte )
- 浮点型 ( float )
- 字符串型 ( string )
- 日期类型 ( date )
- 布尔类型 ( boolean )
- 二进制类型 ( binary )
2、复合数据类型
复合数据类型一般由一种或多种数据类型组合而成,比如数据、JSON 对象和嵌套数据类型。
下面的请求的请求正文和响应正文就是一个嵌套数据类型的
POST http://localhost:9200/tabletennis/team/1?pretty
请求正文
{
"group" : "players",
"user" : [
{
"first" : "dave", "last" : "jones"
},
{
"first" : "kevin", "last" : "morris"
}
]
}
响应正文
{
"_index" : "tabletennis",
"_type" : "team",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
3、Geo 数据类型
Geo 数据类型用于定义一个地理位置信息
例如
数据类型 | 说明 |
---|---|
geo_point | 用于定义经度和纬度 |
geo_shape | 用于定义矩形等不同的几何形状 |
4、特殊的数据类型
特殊的字段类型是指那些由特殊用途的数据类型
例如,IPv4("ip")
接受一个 IP 4 的地址
例如,自动完成数据类型用于支持自动完成或输入建议
例如,token_count
用于统计字符串中的令牌数量
类型映射
每个索引都会映射到一个或多个类型,这样就可以在逻辑上将索引的文档细分成一个个小的组成部分
如果传递的参数不同,那么映射类型也可以彼此不同
1、元字段 ( Meta-Fields )
这些字段提供了映射和与该字段有关的其它对象的信息
例如
_index
_type
_id
_source
2、普通字段 ( Fields )
不同的映射可以含有不同数量的字段,且字段的类型也可以各不相同
动态映射
Elasticsearch 提供了一个用户友好的自动创建映射机制
用户可以将数据直接发布到任何未预先定义的映射中,Elasticsearch 将自动创建映射
这种机制,称为动态映射
范例
例如下面的请求
POST http://localhost:9200/accountdetails/tansferreport
请求正文
{
"from_acc":"7056443341", "to_acc":"7032460534",
"date":"6/28/2019", "amount":10000
}
响应内容
{
"_index" : "accountdetails",
"_type" : "tansferreport",
"_id" : "6EnaRmQBwP8hfMtC_uoj",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
映射参数
映射参数定义了映射的结构、字段的信息、存储的信息以及搜索时将如何分析映射的数据
下面列出了 Elasticsearch 支持的所有映射参数
1、analyzer
2、boost
3、coerce
4、copy_to
5、doc_values
6、dynamic
7、enabled
8、fielddata
9、geohash
10、geohash_precision
11、geohash_prefix
12、format
13、ignore_above
14、ignore_malformed
15、include_in_all
16、index_options
17、lat_lon
18、index
19、fields
20、norms
21、null_value
22、position_increment_gap
23、properties
24、search_analyzer
25、similarity
26、store
27、term_vector
干货推荐
附录:Elasticsearch 教程 系列文章
- 一、Elasticsearch 教程: 基础教程
- 二、Elasticsearch 教程: 简介
- 三、Elasticsearch 教程: 安装前准备工作
- 四、Elasticsearch 教程: 安装 ( Windows )
- 五、Elasticsearch 教程: 安装 ( Unix )
- 六、Elasticsearch 教程: 术语
- 七、Elasticsearch 教程: RESTful API
- 八、Elasticsearch 教程: 初体验 – 分词
- 九、Elasticsearch 教程: 中文分词 – 结巴分词
- 十、Elasticsearch 教程: 准备数据
- 十一、Elasticsearch 教程: 填充数据
- 十二、Elasticsearch 教程: API 约定
- 十三、Elasticsearch 教程: 文档 API
- 十四、Elasticsearch 教程: 搜索 API
- 十五、Elasticsearch 教程: 聚合计算
- 十六、Elasticsearch 教程: 索引 API
- 十七、Elasticsearch 教程: 集群管理 API
- 十八、Elasticsearch 教程: 查询描述语言
- 十九、Elasticsearch 教程: 映射 ( Mapping )
- 二十、Elasticsearch 教程: 分析 ( Analysis )
- 二十一、Elasticsearch 教程: 模块 ( Modules )
- 二十二、Elasticsearch 教程: 测试
- 二十三、Elasticsearch 教程: 版本升级
- 二十四、Elasticsearch 教程: 总结