14.4.1.2. ElasticSearch的RefreshIndex、FlushIndex、FreezeIndex操作的用途

在Elasticsearch中,refresh index、flush index和freeze index三个操作都是用于管理索引的数据刷新,但有些不同:

refresh index:

  • 使索引中的最新数据对搜索可见(使数据搜索生效)。

  • 不确保数据持久化到磁盘,可能会在节点重启时丢失。

  • 频繁调用会影响性能。

主要用于在测试环境下,或需要实时搜索结果的场景。

flush index:

  • 将索引中的内存数据冲刷到磁盘,确保数据持久化。

  • 搜索仍然可以使用内存中的数据。

  • 相比refresh操作影响性能较大,但数据更安全。

适用于在生产环境下定期刷新数据,或在节点重启前手动刷新,避免数据丢失。

freeze index:

  • 将索引置于只读状态,阻止任何进一步的写入。

  • 当待定版本变更或长时间的索引备份时可以 freeze 索引。

  • 搜索查询仍然可用。写入请求会失败,报 IndexFrozenException 错误 。

主要用于在版本升级或备份时保护索引数据,阻止写入改变数据。

总结下:

  • refresh用于实时刷新,搜索生效,数据可能丢失

  • flush用于持久化保存数据,搜索不生效

  • freeze用于索引保护,只读,避免数据变更

这3个操作适用于不同的场景,可以合理运用,灵活管理索引数据的刷新、持久化和保护。