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

时间:2019-01-04 21:44:10

标签: elasticsearch

我正在尝试设计一种流程,以在读取停机时间为零的情况下为Elasticsearch索引重新建立索引,并拒绝写入尝试,直到该过程完成为止。

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

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

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

将索引设置为只读对于确保任何试图写入数据的人都会得到错误并自行处理重试很重要。

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

因此,有一个专门针对此的文档齐全的选项:

  

index.blocks.write

     

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

由于某种原因,我认为它比限制性更强的read_only选项要少得多,但是它非常适合这里。