Elasticsearch 冻结索引

频繁搜索的索引保存在内存中,因为重建索引和帮助进行高效搜索需要时间。另一方面,可能有我们很少访问的索引。这些索引不需要占用内存,可以在需要时重新构建。这类指数被称为冻结索引。

每当搜索分片时,Elasticsearch都会构建冻结索引的每个分片的瞬态数据结构,并在搜索完成后立即丢弃这些数据结构。由于Elasticsearch不会在内存中维护这些临时数据结构,因此冻结索引消耗的堆要比普通索引少得多。与其他方式相比,这允许更高的磁盘与堆的比率。

冻结和解冻示例

以下示例冻结和解冻索引-

POST /index_name/_freeze
POST /index_name/_unfreeze

预期对冻结索引的搜索将缓慢执行。冻结索引不适用于较高的搜索负载。即使对未冻结的索引进行的搜索在几毫秒内完成,对冻结索引的搜索也可能需要数秒或数分钟才能完成。

搜索冻结索引

每个节点的并发加载的冻结索引数受search_throttled线程池中的线程数限制,默认情况下为1。要包含冻结索引,必须使用查询参数− ignore_throttled = false来执行搜索请求

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

监视冻结的索引

冻结索引是使用搜索限制和内存有效分片实现的普通索引。

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