一、映射
Elasticsearch中通過映射來指定字段的數據類型,映射方式有2種,靜態映射和動態映射。
1.動態映射
使用動態映射時,無須指定字段的數據類型,Elasticshearch會自動根據字段內容來判斷映射到哪個數據類型。
比如,插入’2024/4/14 12:12:12’格式的字符串,會將其動態映射到Date類型。
true和false會動態映射到boolean類型
2.靜態映射
使用靜態映射時,需要在創建索引時,指定字段名稱和映射的數據類型。后續創建文檔時就根據設定好的映射來存儲數據。
二、常用字段類型
1.Alias別名
使用別名可以索引中的字段定義一個替代名稱,搜索替代名稱時,相當于搜索其原字段內容
PUT userinfo
{"mappings": {"properties": {"age":{"type": "long"},"aliasage":{#指定類型為別名"type": "alias",#指向age字段"path":"age"}}}
}
2.Binary二進制值
用來存儲Base64的字符串或二進制值
PUT myindex-2_02
{"mappings": {"properties": {"name":{"type": "text"},"blob":{#指定類型為二進制"type": "binary",}}}
}
3.Boolean布爾類型
用來存儲true和false的布爾值
PUT myindex-2_03
{"mappings": {"properties": {"is_published":{"type": "booolean"}}}
}
4.Date日期
用來存儲包含日期格式的字符串
PUT myindex-2_04
{"mappings": {"properties": {"date":{"type": "date"}}}
}
5.數字類型
數字類型 | 說明 |
---|---|
long | 表示有符號的64位整數 |
integer | 表示有符號的32位整數 |
short | 表示有符號的16位整數 |
byte | 表示有符號的8位整數 |
double | 表示雙精度浮點數 |
float | 表示單精度浮點數 |
half_float | 存儲最小值2^-24,最大值65504的整數 |
unsigned_long | 存儲最小值為0,最大值2^64-1的數值 |
PUT myindex-2_05
{"mappings": {"properties": {"number":{"type": "integer"}}}
}
6.object(json數據格式)
object類型其實就是json數據格式
PUT myindex-object
{"mappings": {"properties": {"manager":{"properties": {"age":{"type":"integer"},"name":{"properties":{"first":{"type":"text"},"last":{"type":"text"}}}}}}}
}
7.Geopoint地理位置
用來存儲經緯度,使內容支持經緯度查詢
PUT myindex_hotels
{"mappings": {"properties": {"hotels":{"properties": {"bin":{"properties":{"loaction": {"type":"geo_point"}}}}}}}
}
8.Keyword關鍵字
用于存儲結構化內容,該類型字段通常用于排序,聚合查詢等。該類型內容存儲時不會進行分詞
PUT myindex-2_11
{"mappings": {"properties": {"tag":{"type": "keyword"}}}
}
9.Text文本
用于存儲文本,內容會被分詞器分詞,可以用于全文檢索
PUT myindex-2_12
{"mappings": {"properties": {"tagname":{"type": "text"}}}
}