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. 索引的常見設置

基本設置

  1. index.number_of_replicas 副本數量
  2. index.routing.allocation.require.zone 索引存儲的zone
  3. index.routing.allocation.include._name 索引存儲的節點名稱
  4. index.routing.allocation.include._ip 索引存儲的節點ip
  5. index.routing.allocation.total_shards_per_node 索引在每個節點上可以存儲多少個分片

index 爲unassigned的常見處理方式

當集羣yellow時候,一般爲分配未正常分配,包括如下常見4類處理方法:

  1. zone限制
    PUT index_name/_settings
    {
      "index" : {
        "routing" : {
          "allocation" : {
            "require" : {
              "zone" : ""
            }
          }
        }
      }
    }
    
  2. include._ip 限制
    PUT index_name/_settings
    {
     "index" : {
     "routing" : {
       "allocation" : {
         "include" : {
           "_ip" : ""
            }
          }
        }
      }
    }
    
  3. include._name 限制
    PUT index_name/_settings
    {
     "index" : {
     "routing" : {
       "allocation" : {
         "include" : {
           "_name" : ""
            }
          }
        }
      }
    }
    
  4. total_shards_per_node 值過小導致shard無法分配到所有節點上
    PUT index_name/_settings
    {
      "index" : {
        "routing" : {
          "allocation" : {
            "total_shards_per_node" : "3" #此值根據節點數量和分片數量更改即可
          }
        }
      }
    }
    

常見問題

  1. index 創建瞭如何修改shard數量
    正常情況是不允許修改的,對於可以rollover類型,或者按照日期的index,可以通過修改模板來更新shard數量,從而創建下一個index的時候就自動更新了shard數量;
    如下創建模板後,更新settings的shard數據即可:
    PUT _template/index_03
    {
         "index_patterns": ["index03-*"], 
         "settings": {
           "number_of_shards": 2
         }
       }
    
  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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章