1. Mapping(映射)數據庫
Mapping 是定義文檔及其包含的字段是如何存儲和索引的過程json
例如,咱們用映射來定義:數組
1.1. Mapping Type(映射類型)app
每一個索引都有一個映射類型,以決定文檔將被如何索引curl
映射類型包含兩部分:ui
Meta-fieldsurl
Meta-fields一般用於自定義文檔的元數據。例如,meta-fields包括文檔的 _index, _type, _id, _source等字段spa
Fields 或 propertiescode
一個映射類型包含一個字段列表或屬性列表orm
1.2. Field datatypes(字段數據類型)
每一個字段有一個數據類型,它能夠是下列之一:
1.3. Example mapping
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d' { "mappings": { "doc": { "properties": { "title": { "type": "text" }, "name": { "type": "text" }, "age": { "type": "integer" }, "created": { "type": "date", "format": "strict_date_optional_time||epoch_millis" } } } } } '
建立一個索引名字叫「my_index」,而且添加一個映射類型叫「doc」,包含4個字段
2. Field datatypes(字段類型)
2.1. 核心類型
字符串類型
text , keyword
數值類型
long , integer , short , byte , double , float , half_float , scaled_float
日期類型
date
布爾類型
boolean
二進制類型
binary
範圍類型
integer_range , float_range , long_range , double_range , date_range
2.2. 複雜類型
數組類型
數組不須要一個專門的類型
對象類型
object (PS:單個JSON對象)
內嵌類型
nested(PS:JSON對象數組)
2.3. 地理類型
Geo_point類型
geo_point 用於地理位置經緯度座標
Geo_shape類型
geo_shape 用於複雜形狀
2.4. 專門的數據類型
IP類型
ip (用於IPv4和IPv6地址)
Completion類型
completion (用於自動補全提示)
Token count 類型
token_count (用於計數字符串中的token)
mapper-murmur3
murmur3 (計算值的hashcode,並將其存儲到索引中)
過濾器類型
接受一個查詢語句
join 類型
爲同一索引內的文檔定義父/子關係
3. Meta-fields(元數據字段)
每一個文檔都有與之關聯的元數據
3.1. 標識 元數據字段
_index 文檔屬於哪一個索引
_id 文檔ID
_type 文檔的映射類型
_uid 由 _type和 _id組成的一個組合字段
3.2. 文檔來源 元數據字段
_source 文檔的原始JSON
_size _source字段的長度(多少字節)
3.3. 索引 元數據字段
_all 索引其它字段的值,默認狀況下是禁用的
_field_names 全部非空字段
3.4. 路由 元數據字段
_routing 一個自定義的路由值,用於分片的
3.5. 其它 元數據字段
_meta 其它
4. 小結
若是把Elasticsearch比做關係型數據庫的話,那麼,映射就是建表,映射類型就是存儲引擎,字段類型就是字段類型