Elasticsearch学习-Rollover Index
背景
最早项目中没有Index滚动功能,随着数据增多Index变得巨大后效率急剧降低。
后来加了逻辑,每个月滚动一次Index。但是这样还是不能应对每个Index差异化的数据增加速度。
再后来就加了滚动判断逻辑,数据量或数据行数达到阈值就滚动到下一个Index,而且我们去掉了影响性能的TTL机制,而是采用按配置来删以天为基础单位、及滚动产生的index,极大提升了性嗯呢该。但是后来发生了一次怎么也找不到原因的bug,是由于获取Index大小和行数的返回出了问题。正好要升级到ES 6.x,看到有Rollover Index API
,特别记录一笔,以备将来可查。
1 简介
ES Rollover Index API的大致逻辑:
- 使用类似
xxx-0
的格式建立index,注意必须是短横线-
+数字结尾。 - 建立index时,需要一同添加别名,用来滚动,如
xxx-write
- 一个专门的线程定时调用Rollover Index API:
xxx-write/_rollover
,并传入滚动条件以及新index的mappings、settings等。如果满足条件,会自动按传入的参数创建新的index并附加滚动别名如xxx-write
,并去掉老的index的滚动别名如xxx-write
。 - 你的写入线程不用停机,只要一直用滚动别名
xxx-write
来写入就行,不用操心写到哪里了。