標籤:form com job class 搜尋 gpo 作用 不可 四十
1、映射(mapping)介紹
映射:建立索引的時候,可以預先定義欄位的類型以及相關屬性
elasticsearch會根據json來源資料的基礎類型猜測你想要的欄位對應,將輸入的資料轉換成可搜尋的索引項目,mapping就是我們自己定義的欄位資料類型,同時告訴elasticsearch如何索引資料以及是否可以被搜尋
作用:會讓索引建立的更加細緻和完善
類型:靜態映射和動態映射
2、內建映射類型(也就是資料類型)
string類型:text,keyword兩種
text類型:會進行分詞,抽取詞幹,建立倒排索引
keyword類型:就是一個一般字元串,只能完全符合才能搜尋到
數字類型:long,integer,short,byte,double,float
日期類型:date
bool(布爾)類型:boolean
binary(二進位)類型:binary
複雜類型:object,nested
geo(地區)類型:geo-point,geo-shape
專業類型:ip,competion
3、屬性介紹
store屬性
index屬性
null_value屬性
analyzer屬性
include_in_all屬性
format屬性
更多屬性:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-boost.html
4、建立索引(相當於建立資料庫)、建立表、建立欄位-設定欄位類型,添加資料
說明:
#建立索引(設定欄位類型)PUT jobbole #建立索引設定索引名稱{ "mappings": { #設定mappings映射欄位類型 "job": { #表名稱 "properties": { #設定欄位類型 "title":{ #title欄位 "type": "text" #text類型,text類型可以分詞,建立倒排索引 }, "salary_min":{ #salary_min欄位 "type": "integer" #integer數字類型 }, "city":{ #city欄位 "type": "keyword" #keyword一般字元串類型 }, "company":{ #company欄位,是嵌套欄位 "properties":{ #設定嵌套欄位類型 "name":{ #name欄位 "type":"text" #text類型 }, "company_addr":{ #company_addr欄位 "type":"text" #text類型 }, "employee_count":{ #employee_count欄位 "type":"integer" #integer數字類型 } } }, "publish_date":{ #publish_date欄位 "type": "date", #date時間類型 "format":"yyyy-MM-dd" #yyyy-MM-dd格式化時間樣式 }, "comments":{ #comments欄位 "type": "integer" #integer數字類型 } } } }}#儲存文檔(相當於資料庫的寫入資料)PUT jobbole/job/1 #索引名稱/表/id{ "title":"python分布式爬蟲開發", #欄位名稱:欄位值 "salary_min":15000, #欄位名稱:欄位值 "city":"北京", #欄位名稱:欄位值 "company":{ #嵌套欄位 "name":"百度", #欄位名稱:欄位值 "company_addr":"北京市軟體園", #欄位名稱:欄位值 "employee_count":50 #欄位名稱:欄位值 }, "publish_date":"2017-4-16", #欄位名稱:欄位值 "comments":15 #欄位名稱:欄位值}
代碼:
#建立索引(設定欄位類型)PUT jobbole{ "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 jobbole/job/1{ "title":"python分布式爬蟲開發", "salary_min":15000, "city":"北京", "company":{ "name":"百度", "company_addr":"北京市軟體園", "employee_count":50 }, "publish_date":"2017-4-16", "comments":15}
5、擷取索引下的mappings映射欄位類型
#擷取一個索引下的所有表的mappings映射欄位類型GET jobbole/_mapping#擷取一個索引下的指定表的mappings映射欄位類型GET jobbole/_mapping/job
【重點】在建立索引時一旦給欄位設定了類型後就不可修改了,如果必須要修改就的重新建立索引,所以在建立索引時就必須確定好欄位類型
四十三 Python分布式爬蟲打造搜尋引擎Scrapy精講—elasticsearch(搜尋引擎)的mapping映射管理