Elasticsearch Reference [6.2] ? Mapping
參考官方英文文檔 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
Mapping 是定義文檔及其包含的字段如何存儲和編制索引的過程,每個索引都有一個映射類型,用於確定文檔將如何編制索引。
Meta-fields
包括文檔的_index,_type,_id和_source字段
es字段數據類型:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
- 字符串類型
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 -
Array數據類型(Array不需要定義特殊類型)
[ "one", "two" ] [ 1, 2 ] [{ "name": "Mary", "age": 12 },{ "name": "John", "age": 10}]
-
Object數據類型 (json嵌套)
{ "region": "US", "manager": { "age": 30, "name": { "first": "John", "last": "Smith" } } }
- 地理數據類型
Geo-point,Geo-Shape(比較復雜,參考官網文檔,一般用Geo-point就可以了) -
特殊數據類型
ip(IPv4 and IPv6 addresses)
completion(自動完成/搜索)
token_count (數值類型,分析字符串,索引的數量)
murmur3 (索引時計算字段值的散列並將它們存儲在索引中的功能。 在高基數和大字符串字段上運行基數聚合時有很大幫助)
join (同一索引的文檔中創建父/子關系)
以下是常用的參數類型定義&賦值demo
類型 | 參數定義 | 賦值 |
---|---|---|
text | "name":{"type":"text"} | "name": "zhangsan" |
keyword | "tags":{"type":"keyword"} | "tags": "abc" |
date | "date":{"type": "date"} | "date":"2015-01-01T12:10:30Z" |
long | "age":{"type":"long"} | "age" :28 |
double | "score":{"type":"double"} | "score":98.8 |
boolean | "isgirl": { "type": "boolean" } | "isgirl" :true |
ip | "ip_addr":{"type":"ip"} | "ip_addr": "192.168.1.1" |
geo_point | "location": {"type":"geo_point"} | "location":{"lat":40.12,"lon":-71.34} |
Mapping parameters
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/mapping-params.html