写入性能优化
本章定位:Elasticsearch 默认配置面向搜索场景优化,写入密集型场景需要针对性地调整批量策略、Refresh 间隔和 Translog 参数。
定义与作用
写入性能优化是通过调整客户端批量策略、索引级别参数和节点硬件配置,最大化 Elasticsearch 的索引吞吐量(doc/s)。
完整示例:白歌的批量导入方案
# 步骤 1:创建索引时关闭近实时搜索
PUT /students_bulk
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 0,
"refresh_interval": "-1",
"translog": { "durability": "async", "sync_interval": "30s" }
}
}
# 步骤 2:Bulk 导入
POST /_bulk
# ... 10 万条数据 ...
# 步骤 3:恢复搜索配置
PUT /students_bulk/_settings
{ "index": { "number_of_replicas": 1, "refresh_interval": "1s" } }
POST /students_bulk/_refresh
POST /students_bulk/_flush
| 参数 | 默认值 | 导入优化值 | 原理 |
|---|---|---|---|
number_of_replicas | 1 | 0 | 消除主到副本的同步开销 |
refresh_interval | 1s | -1 | 关闭周期性 Refresh |
translog.durability | request | async | 写入不等待 fsync |
translog.sync_interval | 5s | 30s | 增大异步刷盘间隔 |
小结
写入优化四步:批量写入(5~15MB)→ 关闭 Refresh → 异步 Translog → 0 副本先导完再加。优化公式:{索引参数优化} × {Bulk 策略优化} × {硬件升级} = 10~100 倍性能提升。