提问者:小点点

如何防止数据写入ES索引但允许别名更新


我正在尝试设计一个以零读取停机时间重新索引Elasticsearch索引的过程,拒绝写入尝试,直到该过程完成。

给定一个原始索引和一个指向它的别名,当前流程如下:

  1. 创建暂存索引
  2. 将原始索引设为只读
  3. 将数据从原始索引复制到暂存索引
  4. 将暂存索引设为只读
  5. 更新别名以指向暂存索引
  6. 重新创建原始索引
  7. 将数据从暂存索引复制到原始索引
  8. 更新别名以指向原始索引

问题是通过关闭索引或使用index. block使其只读。read_only=true,我无法更新其别名。

使索引只读对于确保任何尝试写入数据的人都会收到错误并自己处理重试非常重要。

更新别名对于确保任何尝试读取数据的人都能毫无问题地获取数据非常重要。

我怎样才能做到这一点?


共1个答案

匿名用户

所以有一个专门针对这一点的有据可查的选项:

index. block.write

设置为true以禁用对索引的数据写入操作。与read_only不同,此设置不影响元数据。例如,您可以关闭具有写入块的索引,但不能关闭具有read_only块的索引。

出于某种原因,我看到它比更严格的read_only选项少得多,但它非常适合这里。