優化 Elasticsearch 的搜索性能需要從索引設計、查詢優化、硬件配置和集群調優等多方面入手。以下是系統化的優化策略和實操建議:
一、索引設計優化
1. 合理設置分片數
- 分片大小:單個分片建議 10-50GB(超過50GB會影響查詢性能)。
- 分片數量:
- 總分片數 ≤ 節點數 × 1000(避免分片過多導致元數據膨脹)。
- 示例:3節點集群,索引1TB數據 → 分20個主分片(每個約50GB)。
- 注意:主分片數一旦創建不可更改,需提前規劃。
2. 冷熱數據分離
- 熱節點(Hot):SSD磁盤,處理高頻查詢的最新數據。
- 冷節點(Warm):HDD磁盤,存儲歷史數據。
- 實現方式:
PUT /logs-2023 {"settings": {"index.routing.allocation.require.box_type": "hot"} }
3. 索引生命周期管理(ILM)
- 自動滾動(Rollover)索引,避免單個索引過大。
- 配置策略:
PUT _ilm/policy/hot_warm_policy {"phases": {"hot": { "actions": { "rollover": { "max_size": "50GB" } } },"warm": { "actions": { "allocate": { "require": { "box_type": "warm" } } } }} }
4. 優化映射(Mapping)
- 字段類型:使用最精確的字段類型(如 keyword 而非 text 用于精確匹配)。
- 禁用不需要的功能:
{"properties": {"id"