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个操作适用于不同的场景,可以合理运用,灵活管理索引数据的刷新、持久化和保护。