【问题标题】:How to prevent data writes to ES index but allow alias updates如何防止数据写入 ES 索引但允许别名更新
【发布时间】:2019-01-05 06:03:37
【问题描述】:

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

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

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

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

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

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

我怎样才能做到这一点?

【问题讨论】:

  • 请注意,这个问题与大多数弹性搜索零停机时间问题不同,因为我要求写入将失败而不是丢失。另外,这更具体:我想知道如何禁止数据写入但允许元数据写入。

标签: elasticsearch


【解决方案1】:

因此,有一个专门针对此的有据可查的选项:

index.blocks.write

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2014-08-11
    • 2012-06-20
    • 1970-01-01
    • 2019-03-29
    • 2018-01-01
    相关资源
    最近更新 更多