映射(mapping)
映射是創建索引的時候,可以預先定義字段的類型以及相關屬性
Elasticsearch會根據JSON源數據的基礎類型去猜測你想要的字段映射。將輸入的數據變成可搜索的索引項。Mapping就是我們自己定義字段的數據類型,同時告訴Elasticsearch如何索引數據以及是否可以被搜索。
作用:會讓索引建立的更加細致和完善
類型:靜態映射和動態映射
內置類型
string類型: text,keyword(string類型在es5已經被棄用)
數字類型:long, integer, short, byte, double, float
日期類型: date
bool類型: boolean
binary類型: binary
復雜類型: object ,nested
geo類型: point , geo-shape
專業類型: ip, competion
mapping 限制的type
創建mapping
PUT lagou { "mappings": { "job":{ "properties": { "title":{ "type":"text" }, "salary_min":{ "type":"integer" }, "city":{ "type": "keyword" }, "company":{ "properties": { "name":{ "type":"text" }, "company_addr":{ "type":"text" }, "employee_count":{ "type":"integer" } } }, "publish_date":{ "type":"date", "format": "yyyy-MM-dd" }, "comments":{ "type": "integer" } } } } }
PUT lagou/job/1
#當類型不符合的時候他會嘗試去轉換類型,比如字符串的數字和數字類型,但是如果無法轉換就會報錯。
{ "title":"python分布式爬蟲開發", "salary_min":15000, "city":"北京", "company":{ "name":"百度", "company_addr":"北京市軟件園", "employee_count":50 }, "publish_date":"2017-4-16", "comments":15 }
#獲取映射
GET lagou/_mapping GET lagou/_mapping/job GET _all/_mapping/job
#索引中的那個我們建立好了某個字段的映射后,就無法更改了