elk筆記8--index
1. index 創建的幾種方式
直接創建index
第一種方式最普通,此類index 寫入時在logstash中直接指定index01即可;
其缺點是當日志量大的時候,會影響性能。
PUT index01
{}
out:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "index01"
}
按照當前日期創建索引
該方式創建日誌,寫入時候每天會創建一個帶日期的index,此類寫入時在logstash中配置如下:
index => “index02-%{+YYYY.MM.dd}”
PUT /%3Cindex02-%7Bnow%2Fd%7D%3E
{}
out:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "index02-2020.06.21"
}
創建帶有rollover功能的索引
該方式新建一個index帶日期和序號,並設置一個_write別名;
每次執行rollover的時候,會按照當前日期和和序號+1的方式生成新索引,並將_write別名指向最新索引;
因此實際寫入的時候直接使用_write索引即可,該方式比較使用生產中使用;
實際使用的時候,若數據量過大,應該加一個cron定時按照策略進行rollover。
PUT /%3Cindex03-%7Bnow%2Fd%7D-000001%3E
{
"aliases": {
"index03_write": {}
}
}
out:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "index03-2020.06.21-000001"
}
rollover:
POST index03_write/_rollover
out:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"old_index" : "index03-2020.06.21-000001",
"new_index" : "index03-2020.06.21-000002",
"rolled_over" : true,
"dry_run" : false,
"conditions" : { }
}
2. 索引的常見設置
基本設置
- index.number_of_replicas 副本數量
- index.routing.allocation.require.zone 索引存儲的zone
- index.routing.allocation.include._name 索引存儲的節點名稱
- index.routing.allocation.include._ip 索引存儲的節點ip
- index.routing.allocation.total_shards_per_node 索引在每個節點上可以存儲多少個分片
index 爲unassigned的常見處理方式
當集羣yellow時候,一般爲分配未正常分配,包括如下常見4類處理方法:
- zone限制
PUT index_name/_settings { "index" : { "routing" : { "allocation" : { "require" : { "zone" : "" } } } } }
- include._ip 限制
PUT index_name/_settings { "index" : { "routing" : { "allocation" : { "include" : { "_ip" : "" } } } } }
- include._name 限制
PUT index_name/_settings { "index" : { "routing" : { "allocation" : { "include" : { "_name" : "" } } } } }
- total_shards_per_node 值過小導致shard無法分配到所有節點上
PUT index_name/_settings { "index" : { "routing" : { "allocation" : { "total_shards_per_node" : "3" #此值根據節點數量和分片數量更改即可 } } } }
常見問題
- index 創建瞭如何修改shard數量
正常情況是不允許修改的,對於可以rollover類型,或者按照日期的index,可以通過修改模板來更新shard數量,從而創建下一個index的時候就自動更新了shard數量;
如下創建模板後,更新settings的shard數據即可:PUT _template/index_03 { "index_patterns": ["index03-*"], "settings": { "number_of_shards": 2 } }
- 判斷集羣狀態常用的命令
GET _cluster/allocation/explain
GET _cat/health?v
GET _cat/indices?v&health=yellow
GET _cat/shards?h=index,shard,prirep,state,unassigned.reason
GET index_name/_setting
結合以上命令,基本可以查找出集羣異常狀態原因。
3. 說明
參考:
elastic mapping
1 ElasticSearch按日生成index的兩種方法
環境:
es7.2.1