接第17节
3、Mapping
1)、字段类型
-
核心类型
-
字符串(string)
text
,keyword
-
数字类型(Numeric)
long
,integer
,short
,byte
,double
,float
,half_float
,scaled_float
-
日期类型(Date)
date
-
布尔类型(Boolean)
boolean
-
二进制类型(Binary)
binary
-
复合类型
-
数组类型(Array)
Array
支持不针对特定的数据类型 -
对象类型(Object)
object
用于单个JSON对象的对象 -
嵌套类型(Nested)
nested
用于JSON对象的数组 -
地理类型(Geo)
-
地理坐标(Geo-point)
geo_point
纬度/经度坐标 -
地理圆形(Geo-shape)
geo_shape
用于多边形等复杂形状 -
特定类型
-
IP 类型(IP)
ip
用于描述 IPv4 和 IPv6 地址 -
补全类型(Completion)
completion
提供自动完成提示 -
令牌计数类型(Token count)
token_count
用来统计字符串中词条的数量 -
附件类型(attachment)
参考 mapper-attachments 插件,支持将附件例如Microsoft Office格式,open document格式,ePub,HTML等索引为attachment
数据类型。 -
抽取类型(Percolator)
接受来自领域特定语言(query-dsl
)的查询
更多字段类型,请参考 ES 官方文档:参考文档-mapping-types
2)、映射
Mapping (映射)
Mapping 是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和索引的
。比如,使用mapping来定义:
-
哪些字符串属性应该被看做全文本属性(full text fields)
-
哪些属性包含数字,日期或者地理位置
-
文档中的所有属性是否都能被索引(_all 配置)
-
日期的格式
-
自定义映射规则来执行动态添加属性
-
查看 mapping 信息:
GET bank/_mapping
-
修改 mapping 信息:
-
创建索引
PUT /my-index
{
"mappings": {
//映射规则
"properties": {
"age": {
"type": "integer" },
"email": {
"type": "keyword" },//keyword不会进行全文检索
"name": {
"type": "text" }//text保存的时候进行分词,搜索的时候进行全文检索
}
}
}
ES自动猜测的映射类型:
JSON type | 域 type |
---|---|
布尔型:true、false | boolean |
整数:123 | long |
浮点数:1.23 | double |
字符串,有效日期 2020-02-02 | date |
字符串,foo bar | string |
对象,也称为哈希,存储对象类型 | object |