ES设计及规范

 

一、版本

 

推荐6.7或者7.4版本

 

二、配置

 

节点:5节点(5个主分片、5个备分片)

 

大小:每个节点500G(原因:目前存量不超过30G,一年超过50G,该资源可支撑3年以上)

 

 

 

三、索引、映射设计规范

 

1、文档自动映射关掉:即"dynamic":"false"

 

              true(默认):动态映射,会给陌生字段自定义mapping(即会插入新的字段,且能根据新的字段索引);

 

              false:静态映射,陌生字段能插入,但是不会给陌生字段自定义mapping(即能插入新字段,不能根据新字段索引);

 

              strict:严格模式,不允许陌生字段插入              

 

2、ES索引自动刷新默认是1s,实时刷新比1s刷新性能下降10倍左右
3、ES在使用时尽量使用的别名

 

      当使用别名时候可以支持字段名或者字段类型的修改,具体方案如下:

 

      原索引:old_index  

 

      给原索引创建一个别名:

    POST _aliases
      {
        "actions": [ { "add": { "index": "old_index", "alias": "old_index_alias" } } ]

      }

 

      创建新的索引:new_index

 

      通过_reindex将old_index的数据同步到new_index上面

 

     再将别名映射到新的索引

 


4、_id在插入数据时候使用业务主键(比如:动态ID+评论ID+评论类型)
5、数据迁移尽量使用dataworks,比自己写代码快的多
6、ID(比如动态ID)一般建议为keyword类型(查询比long类型快很多,但是不支持比较大小和范围查询),如果想要做范围查询或者比较大小,可再额外增加一个字段,字段类型定义为Long类型的

 

7、开放索引的只读设置:

 

           PUT _settings { "index": { "blocks": { "read_only_allow_delete": "false" } } }

 

8、批量写ES可以抗住1w+QPS没问题'

 

9、字段类型设计原则:

 

     1)字段建议使用keyword类型,查询快,支持排序

 

     2)content字段要用text字段,支持分词,不支持排序

 

     3)时间使用long类型,支持范围查询,建议到精确到分钟,会提高查询效率

 

 

 

 

 

 

 

posted @ 2020-06-30 17:23  乌瑟尔  阅读(2111)  评论(0编辑  收藏  举报