按照官方文档的说明:
1.不要在索引仍然有数据写入时执行forcemerge。
2.如果对一个索引执行了forcemerge操作,例如_forcemerge?max_num_segments=1,它是一个同步接口,会阻塞直到完成为止,如果此时用户断开,这个任务会转到后台继续执行,直到完成为止。
现在我有几个疑问:
1.我每天有定时任务对无数据写入的索引做forcemerge,大多数情况下都正常执行,但曾经出现过一两次单个分片的segment还没合并到一个时就中断了,不知道哪些情况下,可能导致这个操作中断。
2.假如我想要手动中断某个forcemerge操作,是否支持,似乎没有找到取消的方法。
3.假如我对已经没有写入的索引做_forcemerge?max_num_segments=1,后来又向索引中写入了数据,那最终它会变成每个分片中只有一个segment的状态吗,还是说forcemerge任务会中断,或者是任务能执行完,但最终达不到max_num_segments=1的状态?
1.不要在索引仍然有数据写入时执行forcemerge。
2.如果对一个索引执行了forcemerge操作,例如_forcemerge?max_num_segments=1,它是一个同步接口,会阻塞直到完成为止,如果此时用户断开,这个任务会转到后台继续执行,直到完成为止。
现在我有几个疑问:
1.我每天有定时任务对无数据写入的索引做forcemerge,大多数情况下都正常执行,但曾经出现过一两次单个分片的segment还没合并到一个时就中断了,不知道哪些情况下,可能导致这个操作中断。
2.假如我想要手动中断某个forcemerge操作,是否支持,似乎没有找到取消的方法。
3.假如我对已经没有写入的索引做_forcemerge?max_num_segments=1,后来又向索引中写入了数据,那最终它会变成每个分片中只有一个segment的状态吗,还是说forcemerge任务会中断,或者是任务能执行完,但最终达不到max_num_segments=1的状态?
2 个回复
tongchuan1992 - 学无止境、学以致用
赞同来自:
2.可以先看下执行forcemerge的task的作业ID,然后执行task的cancle可不可以停止。
3.一般不会最后是一个segment,它应该会首先慢慢merge,你有数据写入又会生成新的segmet,感觉会生成很多个segment,达不到你请求的目的。
Charele - Cisco4321
赞同来自:
除非它自己异常报错。
2 merge开始时,它首先会flush。然后在这一刻的所有已存在的段里面选取拿来做merge,
(能不能选中看policy)
merge开始后,你再index数据肯定就是另外的段了,不可能在这次merge的作用范围里面。
所以merge结束后,不可能是一个段。