从粉刷房子看线性dp:状态设计与优化的完整拆解
2026/10/11 6:50:39
shard = hash(routing) % number_of_primary_shards(routing默认为文档ID,可自定义如用户ID)使用_bulk API,单次批量建议5-15MB(约1000-5000条文档)
优先使用SSD
index.merge.policy.max_merged_segment(如5GB),避免过大段导致IO峰值调大index.refresh_interval(如30秒或1分钟),减少刷新频率(需接受数据可见延迟)
调大index.translog.flush_threshold_size(如1GB)或index.translog.sync_interval,减少Flush次数(注意:未刷盘时节点故障可能丢失数据)
临时场景(如全量导入)可将副本数设为0(number_of_replicas: 0),完成后恢复
-Xms与-Xmx值相同,为物理内存的50%且≤31GB(非越大越好)| 参数名 | 参数值 | 说明 |
|---|---|---|
| cluster.name | elasticsearch | 集群名称,建议与数据相关,同网段同名节点可自动发现 |
| node.name | node-1 | 集群内唯一节点名,可设为主机名(如node.name:${HOSTNAME}) |
| node.master | true | 是否为候选主节点(需选举确定) |
| node.data | true | 是否存储索引数据(数据操作在此类节点完成) |
| index.number_of_shards | 1 | 默认索引分片数,可创建时调整(数据量小时设为1效率高) |
| index.number_of_replicas | 1 | 默认索引副本数,副本越多可用性越好但写入同步开销越大 |
| transport.tcp.compress | true | 节点间数据传输是否压缩(默认不压缩) |
| discovery.zen.minimum_master_nodes | 1 | 选举主节点所需最少候选节点数,合理值为(master_eligible_nodes/2)+1(避免脑裂) |
| discovery.zen.ping.timeout | 3s | 节点发现时Ping超时时间,网络差时可调大(防止误判节点状态) |