elk笔记8--index

elk笔记8--index

  • 1. index 创建的几种方式
    • 直接创建index
    • 按照当前日期创建索引
    • 创建带有rollover功能的索引
  • 2. 索引的常见设置
    • 基本设置
    • index 为unassigned的常见处理方式
    • 常见问题
  • 3. 说明

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

你可能感兴趣的:(Bigdata)