Elasticsearch index.blocks.write Setting

The index.blocks.write setting in Elasticsearch is used to control write operations on an index. When enabled, it blocks write operations, effectively making the index read-only.

  • Default value: false (write operations are allowed)
  • Possible values: true (block writes) or false (allow writes)
  • Recommendations: Use this setting when you need to temporarily prevent write operations on an index, such as during maintenance or to protect critical data.

Example Usage

To set an index to read-only:

PUT /my-index/_settings
{
  "index": {
    "blocks": {
      "write": true
    }
  }
}

You might want to change this setting when:

  • Performing index maintenance
  • Protecting historical data from modifications
  • Troubleshooting index issues

The effect of this change is that all write operations (index, update, delete) will be rejected for the specified index.

Common Issues and Misuses

  • Forgetting to disable the write block after maintenance, leading to unexpected write failures
  • Not considering the impact on applications that depend on writing to the index
  • Applying the setting to all indices unintentionally

Do's and Don'ts

Do's:

  • Use this setting for temporary maintenance or data protection
  • Always remember to remove the write block when it's no longer needed
  • Monitor the index status to ensure it's not left in a read-only state unintentionally

Don'ts:

  • Don't use this as a permanent solution for data protection; consider other methods like role-based access control
  • Avoid setting this on production indices without proper planning and communication
  • Don't confuse this with other block settings like index.blocks.read

Frequently Asked Questions

Q: How does index.blocks.write differ from making an index read-only?
A: While both prevent write operations, index.blocks.write is typically used for temporary situations and can be easily toggled, whereas making an index read-only through other means might be more permanent or require different procedures to reverse.

Q: Can I still read from an index when index.blocks.write is set to true?
A: Yes, read operations are still allowed. This setting only blocks write operations.

Q: Will setting index.blocks.write to true affect ongoing indexing jobs?
A: Yes, any ongoing or new indexing jobs will fail for the affected index until the write block is removed.

Q: How can I check if an index has write operations blocked?
A: You can use the GET /_settings API to check the current settings of an index, including the index.blocks.write value.

Q: Does setting index.blocks.write affect all nodes in the cluster?
A: Yes, once set, it applies cluster-wide for the specified index, preventing write operations from any node.

Pulse - Elasticsearch Operations Done Right

Stop googling errors and staring at dashboards.

Free Trial

Subscribe to the Pulse Newsletter

Get early access to new Pulse features, insightful blogs & exclusive events , webinars, and workshops.