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