Elasticsearch 冻结索引 Frozen Indices 怎么用?

文章导读
Previous Quiz Next 频繁搜索的索引会驻留在内存中,因为重建它们需要时间,并且有助于高效搜索。另一方面,可能有一些我们很少访问的索引。这些索引无需占用内存,可以在需要时重新构建。此类索引被称为 frozen indices。
📋 目录
  1. A 冻结和解冻的示例
  2. B 搜索 Frozen Index
  3. C 监控 Frozen Indices
A A

Elasticsearch - 冻结索引



Previous
Quiz
Next

频繁搜索的索引会驻留在内存中,因为重建它们需要时间,并且有助于高效搜索。另一方面,可能有一些我们很少访问的索引。这些索引无需占用内存,可以在需要时重新构建。此类索引被称为 frozen indices。

Elasticsearch 在每次搜索 frozen index 的每个分片时,都会构建该分片的 transient data structures,并在搜索完成后立即丢弃这些数据结构。由于 Elasticsearch 不在内存中维护这些 transient data structures,frozen indices 消耗的 heap 远少于普通索引。这使得磁盘到 heap 的比率比其他方式可能达到的要高得多。

冻结和解冻的示例

以下示例冻结并解冻一个索引 −

POST /index_name/_freeze
POST /index_name/_unfreeze

对 frozen indices 的搜索预计会执行得很慢。Frozen indices 不适用于高搜索负载。搜索 frozen index 可能需要几秒或几分钟才能完成,即使在索引未冻结时相同的搜索只需毫秒即可完成。

搜索 Frozen Index

每个节点上同时加载的 frozen indices 数量受 search_throttled threadpool 中线程数的限制,默认值为 1。要包含 frozen indices,搜索请求必须使用查询参数执行 − ignore_throttled=false.

GET /index_name/_search?q=user:tpoint&ignore_throttled=false

监控 Frozen Indices

Frozen indices 是使用搜索限流和内存高效的分片实现的普通索引。

GET /_cat/indices/index_name?v&h=i,sth