Elasticsearch:如何把一个索引变为只读

本文介绍了如何将Elasticsearch的索引设置为只读,以限制写入操作,并展示了当尝试在只读索引上执行写操作时会遇到的错误。此外,还演示了如何恢复索引的写入功能。

将索引设置为只读可能听起来很奇怪,但在 Elasticsearch 中执行此类操作是可能的。想象一下这样一种情况,你特别需要限制对索引的写入操作,无论是维护、业务规则还是任何其他原因。让我们学习如何将索引配置为已读以及如何撤消操作。

我们先使用如下的命令来创建一个叫做 test 的索引:

PUT test/_doc/1
{
  "content": "I am xiaoguo from Elastic"
}

设置为只读

要进行此更改,我们需要更新索引设置。 下面的命令将使索引成为只读的。

PUT /test/_settings
{
  "index": {
    "blocks": {
      "write": true
    }
  }
}

执行完上面的命令后,我们可以再接着创建一个如下的一个文档:

PUT test/_doc/2
{
  "content": "I am an evangelist as well"
}

我们可以看到如下的一个响应:

{
  "error": {
    "root_cause": [
      {
        "type": "cluster_block_exception",
        "reason": "index [test] blocked by: [FORBIDDEN/8/index write (api)];"
      }
    ],
    "type": "cluster_block_exception",
    "reason": "index [test] blocked by: [FORBIDDEN/8/index write (api)];"
  },
  "status": 403
}

要恢复只需将状态从 true 更改为 false。我们试着运行如下的命令:

PUT /test/_settings
{
  "index": {
    "blocks": {
      "write": false
    }
  }
}

我们再次写入我们想要的文档。我们可以看到这次的写入是成功的:

PUT test/_doc/2
{
  "content": "I am an evangelist as well"
}

上面的响应为:

{
  "_index": "test",
  "_id": "2",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}

希望这个能帮助到你。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值