面試官:想了解應聘者之前公司接觸的 ES 使用場景、規模,有沒有做過比較大
規模的索引設計、規划、調優。
解答:
如實結合自己的實踐場景回答即可。
比如:ES 集群架構 13 個節點,索引根據通道不同共 20+索引,根據日期,每日
遞增 20+,索引:10 分片,每日遞增 1 億+數據,
每個通道每天索引大小控制:150GB 之內。
僅索引層面調優手段:
1.1、設計階段調優
1、根據業務增量需求,采取基於日期模板創建索引,通過 roll over API 滾動索
引;
2、使用別名進行索引管理;
3、每天凌晨定時對索引做 force_merge 操作,以釋放空間;
第 81 頁 共 485 頁4、采取冷熱分離機制,熱數據存儲到 SSD,提高檢索效率;冷數據定期進行 shrink
操作,以縮減存儲;
5、采取 curator 進行索引的生命周期管理;
6、僅針對需要分詞的字段,合理的設置分詞器;
7、Mapping 階段充分結合各個字段的屬性,是否需要檢索、是否需要存儲等。……..
1.2、寫入調優
1、寫入前副本數設置為 0;
2、寫入前關閉 refresh_interval 設置為-1,禁用刷新機制;
3、寫入過程中:采取 bulk 批量寫入;
4、寫入后恢復副本數和刷新間隔;
5、盡量使用自動生成的 id。
1.3、查詢調優
1、禁用 wildcard;
2、禁用批量 terms(成百上千的場景);
3、充分利用倒排索引機制,能 keyword 類型盡量 keyword;
4、數據量大時候,可以先基於時間敲定索引再檢索;
第 82 頁 共 485 頁5、設置合理的路由機制。
1.4、其他調優
部署調優,業務調優等。
上面的提及一部分,面試者就基本對你之前的實踐或者運維經驗有所評估了。