索引的創建及刪除
1. 通過索引一篇文檔創建了一個新的索引 。這個索引采用的是默認的配置,新的字段通過動態映射的方式被添加到類型映射。
利用Kibana提供的DevTools來執行命令,要創建一個索引
put /sdb (其中sdb為一個索引)
創建成功后會返回如下結果
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "sdb"
}
如果你想禁止自動創建索引,你 可以通過在 config/elasticsearch.yml
的每個節點下添加下面的配置:
action.auto_create_index: false
{ "sdb" : { "aliases" : { }, "mappings" : { }, "settings" : { "index" : { "creation_date" : "1552621484634", "number_of_shards" : "5", //每個索引的主分片數,默認值是 5 。這個配置在索引創建后不能修改。 "number_of_replicas" : "1", //每個主分片的副本數,默認值是 1 。對於活動的索引庫,這個配置可以隨時修改。 "uuid" : "PQ1TSt5hQOua_cUAegrYmw", "version" : { "created" : "6060299" }, "provided_name" : "sdb" } } } }
如果想修改副本數,可以用 update-index-settings
API 動態修改副本數:
PUT /sdb/_settings { "number_of_replicas": 1 }
再次使用GET /sdb進行查看
上面我們說了如何創建一個索引,那么接下來我們來說說如何刪除一個索引
DELETE /sdb
刪除成功后會有以下提示:
{ "acknowledged" : true }
mapping映射
映射是創建索引的時候,可以預先定義字段的類型以及相關屬性
Elasticsearch會根據JSON源數據的基礎類型去猜測你想要的字段映射。將輸入的數據變成可搜索的索引項。Mapping就是我們自己定義字段的數據類型,同時告訴Elasticsearch如何索引數據以及是否可以被搜索。
作用:會讓索引建立的更加細致和完善
類型:靜態映射和動態映射
靜態映射
動態映射
什么是動態映射
文檔中碰到一個以前沒見過的字段時,動態映射可以自動決定該字段的類型,並對該字段添加映射
如何配置動態映射
- 通過dynamic屬性進行控制
- true:默認值,動態添加字段; false:忽略新字段; strict:碰到陌生字段,拋出異常
適用范圍
適用在根對象上或者object類型的任意字段上
內置類型
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":{ //title 字段 "type":"text" //類型設置,text類型可分詞 }, "salary_min":{ "type":"integer" }, "city":{ "type": "keyword" //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分布式web開發", "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