概述
在工作中,我们常常需要对setting做一些微调,这个时候我们应该如何处理?
settings是针对索引库而言修改分片和副本数的。
一个索引库的setting如下
{
"poc2" : {
"settings" : {
"index" : {
"refresh_interval" : "10s",
"number_of_shards" : "5",
"translog" : {
"flush_threshold_size" : "1gb",
"sync_interval" : "30s",
"durability" : "async"
},
"provided_name" : "poc2",
"creation_date" : "1559179132567",
"number_of_replicas" : "2",
"uuid" : "DWxdd-uQSLSycMslq_16xQ",
"version" : {
"created" : "6050499"
}
}
}
}
}
number_of_shards 主分
number_of_replicas 副本
refresh_interval 每10秒刷新poc2 索引
默认情况下索引的refresh_interval为1秒,这意味着数据写1秒后就可以被搜索到,每次索引的 refresh 会产生一个新的 lucene 段,这会导致频繁的 segment merge 行为,如果你不需要这么高的搜索实时性,应该降低索引refresh 周期(即你可能想优化索引速度而不是近实时搜索, 可以通过设置 refresh_interval , 降低每个索引的刷新频率)
事务日志操作间隔调整:translog flush
durability: async //异步刷新
sync_interval: 30s //间隔30s异步刷新(设置后无法更改)
flush_threshold_size: 1gb //内容容量到达1gb异步刷新
translog是elasticsearch的事务日志文件,它记录了所有对索引分片的事务操作(add/update/delete),每个分片对应一个translog文件。
translog是用来恢复数据的。Es用“后写”的套路来加快写入速度 — 写入的索引并没有实时落盘到索引文件,而是先双写到内存和translog文件,有三种状态(可搜索 & 未落盘 & 已写日志) 。如果掉电,es重启后还可以把数据从日志文件中读回来。
1、首先把要微调的索引库关闭
#关闭poc2索引库
POST /poc2/_close
2、微调setting
PUT /poc2/_settings?pretty
{
"index" : {
"number_of_replicas" : 1
}
}
3、打开微调后的索引库
#打开poc2的索引
POST /poc2/_open
4、查看修改后的setting
#查看索引
GET /poc2/_settings