Elasticsearch 中的 Frozen Index 是什么?怎么使用它?

Sherwin.Wei Lv8

Elasticsearch 中的 Frozen Index 是什么?怎么使用它?

回答重点

Frozen Index 是 Elasticsearch 在 6.6.0 版本引入的一种索引状态,通过将较少查询的索引标记为“冷冻”以节省资源。冷冻索引会从堆内存中移除其分段,减少内存和文件句柄的使用,从而提高集群的性能。

使用 Frozen Index 的主要方式有:
1)将索引标记为“冷冻”状态

1
POST /your-index/_freeze

2)将冷冻索引重新设置为活跃状态

1
POST /your-index/_unfreeze

查询冷冻索引时,应该在查询中加上 ignore_throttled=false 参数

1
2
3
4
5
6
GET /your-index/_search?ignore_throttled=false
{
"query": {
"match_all": {}
}
}

使用条件:Frozen Index 仅适用于 coordinating-only 节点,且冷冻索引在读取时速度较慢,所以适用于存档数据或很少被查询的数据。

扩展知识

1)为什么需要 Frozen Index:在实际应用中,有些数据往往只在特定时间段内被频繁查询,之后查询频率大大降低。直接删除这些数据不安全,而保留在活跃索引会占用系统资源。通过使用 Frozen Index,可以释放内存和文件句柄资源,提高系统的资源利用率。

2)维护成本:虽然冷冻索引减少了资源占用,但它们增加了生命周期管理的复杂性。对于很少访问的长期存档数据,使用 Frozen Index 可以节省大量资源,但需要注意确保查询能够正确配置 ignore_throttled=false 参数。

3)性能影响:查询冷冻索引的性能会显著下降,因为每次查询都必须从磁盘上载入索引数据,所以适合用于不频繁或非高时效要求的查询。

4)与其他索引类型的比较

  • Active Index:活跃索引是常规状态,所有分段数据都在内存中,适合需要高频查询的数据。
  • Closed Index:关闭索引通过完全关闭索引文件句柄来节省资源,但在重新启用时需要完全打开索引,使用便捷性上不如 Frozen Index。
  • Read-Only Index:只读索引用于防止进一步写入,但还是保留内存资源。

5)适用场景:适用于长时间不变的数据,例如日志、大型历史数据档案等。这些数据需要偶尔访问,但不需要频繁查询的实时响应,因为第一次查询会比较慢。

Comments
On this page
Elasticsearch 中的 Frozen Index 是什么?怎么使用它?