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