arterhuo / blog

1 stars 1 forks source link

Elasticsearc使用规范 #8

Open huoarter opened 5 years ago

huoarter commented 5 years ago

上线使用流程

  1. 使用方需衡量上线 es的data size和write/read qps
  2. 提交给sre申请资源,sre根据data size和qps来创建适合的资源 大致标准: 16C/64G 1.5万/qps 写入 32C/64G 3万/qps 写入
  3. 通过index和mapping规范建立使用index, shard数分配代码不要控制,由sre来控制分配
  4. 如需针对index的字段,settings作出更改,请务必通知到sre再进行操作

index和mapping规范

  1. index命名格式:
    1. appname-YY.MM.dd (适用于递增且有@timestamp字段的索引) 例:prism-2019.05.28 注意时间格式
    2. appname (适用于类DB存储索引,无需@timestamp字段的索引) 例:shop.item.list
  2. mapping约束规范:
    1. @timestamp type 必须统一为date类型,且格式统一一种(单索引统一,或者类似prism-*所有匹配到的索引统一)
    2. mapping 遍历层,字段不能过多(需要大家商量约束),超过约束层,作为一个字段写入
  3. index shards和replicas数量:
    1. 据经验来谈,单个shards size 40G左右较佳,一个索引至少3个shard (通过此标准来计算)
    2. replicas业务使用索引至少分配一个,ELK日志使用es可以不分配replicas
  4. ELK日志单行size不得超过16k,超过之后直接丢弃

查询

  1. 使用代码全量查询的,需要使用scroll进行操作
  2. 使用kibana查询的,不要查询过长时间,不能使用无限值(理论上)的字段作聚合查询
  3. 禁止使用*类似的条件查询聚合

写入

  1. 程序应支持限速限流,不能以最大速度写入(可以封装sdk)

维护

  1. 必须添加禁止通配符删除索引

    {
    
    "persistent": {
    "action.destructive_requires_name": true
    }
    }
  2. 设置默认es模板,部分es针对索引添加mapping模板:
    {
    "template" : "*",
    "settings" : {
    "index" : {
      "translog": {
        "flush_threshold_size": "1gb",
        "sync_interval": "60s",
        "durability": "async"
      },
      "number_of_shards" : "5",
      "number_of_replicas": "1",
      "refresh_interval": "60s"
    }
    }
    }

申请模板: |集群名称|size|write qps|owner|index name| |bizes|2T|20000|张三|bizes-*|