从社区上看到一个问题,回答了一下:
总结了下提高写入性能的方案: 服务端:
1. refresh : refresh_interval(1s) / indices.memory.index_buffer_size(10%)
2. translog :
Index.translog.durability(request,每个请求都落盘)--->async(异步写入)
Index.translog.sync_interval---->60s
Index.translog.flush_threshod_size(512m,触发flush)--->增大
3. 分片设定:
副本设为0,完成后再增加
total_share_per_node--->均匀分片
4. 队列适当增大
5. 线程数 = CPU核心数 + 1
6. mapping:dynamic设置成false(避免不必要的字段索引)
客户端:
1. 多线程、批量写,单个bulk请求体数据量不能太大,5-15m
2. 写入端bulk请求超时时间建议60s以上
3. 写入端轮询到不同节点
4. 使用ES自动生成的文档ID