elasticsearch5.x系列之四(索引模板的使用,詳細得不要不要的)
阿新 • • 發佈:2019-01-26
1,首先看一下下面這個索引模板
curl -XPUT "master:9200/_template/template_1?pretty" -H 'Content-Type: application/json' -d' ---> 模板名字叫做template1
{
"template" : "hello*", -------------> 匹配的索引名字
"order" : 0, -------------> 代表權重,如果有多個模板的時候,優先進行匹配,值越大,權重越高
"settings" : {
"number_of_shards" : 1 -------> 主分片的設定
},
"aliases": {
"alias_1" : {} ------> 索引對應的別名
},
"mappings" : { -----> 欄位的對映
"_default_": { -----------------> 預設的配置
"_source" : { "enabled" : false }, ------> 欄位原始的具體值是否要存
"_all": { "enabled": false }, -----> 禁用_all 欄位,
"dynamic": "strict" ----------> 只可以用定義的欄位,關閉預設的自動推斷資料型別
},
"type1" : { ----> 型別名字
"_source" : { "enabled" : true }, ------> 欄位具體的值是否要存
"properties" : { ---------> 欄位對映
"@timestamp": { -------> 具體的欄位對映
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"@version": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"Guid": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"LogLevel": {
"type": "long"
}
}
}
}
}
'
2,關於索引模板的刪除和檢視。
刪除
curl -X DELETE "localhost:9200/_template/template_1"
檢視:
GET /_template/template_1
GET /_template/temp*
GET /_template/template_1,template_2
GET /_template
判斷是否存在
HEAD _template/template_1
3,哦了,看完這個簡單的模板之後,我們來注意看一下以下幾點
注意3.1:不要在一個索引中定義多個type。
6.X版本已經不支援,7.X版本徹底不支援。
擴充套件問題:5.X版本的父子文件實際實現中是一個索引中定義了多個type,到了6.X中實現方式改變為:join方式。
注意3.2:將Set _source設定為false。
假設你只關心度量結果,不是原始檔案內容。
將節省磁碟空間並減少IO。
比如,你可以把原始的資料儲存在mysql ,hbase 等其他地方,從es 中得到id 後,去相應的資料庫中進行取資料
舉例:
“_source”:{
“enabled”:false
},
注意3.3:將_all設定為false。
假設你確切地知道你對哪個field做查詢操作?
能實現效能提升,縮減儲存。
舉例:
“_all”:{
“enabled”:false },
注意3.4:設定dynamic = strict。
假設你的資料是結構化資料。
欄位設定嚴格,避免髒資料注入。
舉例:
“dynamic”:”strict”,
注意3.5:使用keyword型別
假設你只關心完全匹配
提高效能和縮小磁碟儲存空間
舉例:
“CLF_CustomerID”:{
“type”:”keyword”
},
4, 索引模板的用途,一般是用在時間序列這樣的索引中
4.1 概述
也就是說,如果你的索引,可以按照每週,或者每天進行建立索引,那麼,索引模板的作用就來了。
你只要配置好索引模板,後面你就不用每次都要建立索引的映射了。這個糖果還是很好用的。