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