Оглавление курса

Инвертированный индекс и хранение

Разберём структуры, которые делают поиск быстрым, и связь между возможностями поля и стоимостью хранения.

Разделов: 4Elasticsearch 9.4.3Ещё не прочитан

Чему вы научитесь

  • От терма к документу
  • Разные структуры для разных задач
  • Цена возможностей

Разберём структуры, которые делают поиск быстрым, и связь между возможностями поля и стоимостью хранения.

Примеры course-products используют учебную схему и товар из главы 5 «Mapping и типы полей». Разборы упражнений ниже используют отдельный публичный набор тренажёра.

Механизм работы
  • Текст товара
  • Термы → posting lists
  • Пересечение → кандидаты

Разберём структуры, которые делают поиск быстрым, и связь между возможностями поля и стоимостью хранения.

Курс ориентирован на Elasticsearch 9.4.3. Разборы упражнений используют публичный набор products; остальные запросы показывают отдельные учебные индексы и могут требовать подготовки или прав, недоступных в тренажёре. Ответы сокращены, score может меняться. Для расширенных функций проверяйте лицензию и вариант развёртывания.

01 / 04

От терма к документу

Обычный документ отвечает на вопрос «какие слова в товаре?». Инвертированный индекс отвечает на обратный вопрос: «в каких документах встречается слово?». Для wireless хранится список документов, а позиции позволяют проверять порядок и расстояния. Пересечение списков ускоряет AND, объединение — OR. Анализатор определяет термы до того, как запрос начнёт искать.

Самопроверка
02 / 04

Разные структуры для разных задач

_source нужен для возврата полей. Инвертированный индекс помогает отбирать по термам, point-структуры — по числам и пространственным значениям. Doc values дают ориентированное на столбцы чтение для сортировки и агрегаций. Хранение строки в _source не делает её автоматически доступной для любого способа поиска: возможности зависят от mapping.

Самопроверка
03 / 04

Цена возможностей

Multi-fields создают несколько индексируемых представлений одного значения. Позиции нужны фразовому поиску, но занимают место; offsets могут помогать подсветке. Отключение индексации или doc values требует понимания будущих запросов. Не включайте fielddata для больших text-полей как универсальное исправление агрегаций: обычно нужен keyword-подтип.

Mapping показывает доступные представления полей, а не физические posting lists.

GET /course-products/_mapping

Как читать результат

Mapping показывает доступные представления полей, а не физические posting lists.

Самопроверка
04 / 04

Разбор на примере каталога

Возьмём товары 1: «wireless headphones» и 2: «wireless speaker». У терма wireless список [1,2], у headphones — [1]. Пересечение даёт [1], объединение — [1,2]. Чтобы вернуть название найденного товара, нужен доступ к значению документа, а чтобы отсортировать кандидатов по цене — к числовым значениям. Эти операции используют разные структуры. Поэтому поле может быть пригодно для возврата в JSON, но непригодно для выбранной агрегации: наличие значения в документе не равно наличию нужного поискового представления.

Самопроверка

Самопроверка

Сначала ответьте самостоятельно, затем раскройте объяснение.

1. Что такое posting list?

Список документов, содержащих терм, с дополнительными сведениями о вхождениях.

2. Зачем позиции?

Чтобы отличать порядок слов и проверять близость во фразах.

3. Для чего doc values?

Для столбцового доступа при сортировке, агрегациях и ряде скриптов.

4. Почему _source недостаточно для поиска?

Поиск использует подготовленные структуры, а не автоматически перебирает JSON всех документов.

5. Чем опасен fielddata?

Большим потреблением heap при загрузке значений text-полей.

Краткая памятка

  • Список документов, содержащих терм, с дополнительными сведениями о вхождениях.
  • Чтобы отличать порядок слов и проверять близость во фразах.
  • Для столбцового доступа при сортировке, агрегациях и ряде скриптов.
  • Поиск использует подготовленные структуры, а не автоматически перебирает JSON всех документов.
  • Большим потреблением heap при загрузке значений text-полей.

Официальная документация

Готовы применить знания?

Подтвердите прочтение, чтобы сохранить своё место. Чтение и решение заданий учитываются отдельно в этом браузере с помощью гостевой cookie.