es 毛刺问题
在写入时,边写边查并不会出现明显毛刺,但在写入时不查询,写入完成后再查询会出现明显毛刺。下图的三个毛刺是在是用反转索引时,写入完成后切换索引时出现。
通过 remove 和 add 别名可以无感切换索引
/_aliases
{
"actions": [
{
"add": {
"index": "index-2",
"alias": "index"
}
},
{
"remove": {
"index": "index-1",
"alias": "index"
}
}
]
}
以下是优化方法,其中的 1 ,是不做任何处理的情况下的毛刺。
2 是在写入完成后进行缓存预热后再切换的毛刺。
/_search
{
"query": {
"match_all": {}
}
}
3 是在写入完成后,手动进行 flush 将系统缓存写入硬盘,再进行段合并后的毛刺。
/_flush
/_forcemerge?max_num_segments=1
4 是先进行 flush 和段合并再 进行缓存预热后的毛刺。
在多次测试中,手动 flush 段合并和数据预热都可以降低毛刺,有时段合并的效果更好,有时数据预热的效果更好,由于我这里是人工操作,在发送请求时会有时间间隔,所有没有进行 refresh ( refresh 操作默认 1 秒 1 次,可设置 refresh_interval 来调整),如果操作时间间隔短,需要先进行 refresh 将数据从缓冲区缓存刷新入系统缓存生成段文件( segment ),然后再进行后续的刷入硬盘、段合并等操作。
标签:index,缓存,毛刺,写入,refresh,问题,flush,ES From: https://www.cnblogs.com/yinchrn/p/18427515