四十三 Python分布式爬蟲打造搜尋引擎Scrapy精講—elasticsearch(搜尋引擎)的mapping映射管理

來源:互聯網
上載者:User

標籤: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映射管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.