一、版本
推薦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類型,支持范圍查詢,建議到精確到分鍾,會提高查詢效率