Базы данных

Учебник Elasticsearch для начинающих

19 уроков · 6 разделов · бесплатно, без регистрации

Elasticsearch — это поисковый движок, который превращает гигабайты текста в мгновенный, релевантный поиск. Этот курс ведёт от вопроса «зачем нужен поиск, если есть SQL LIKE» до устройства инвертированного индекса, маппинга, Query DSL, релевантности BM25, анализаторов, агрегаций и кластера из шардов и реплик. Курс для разработчиков и аналитиков, которые хотят понять, как работает поиск по сайту, анализ логов и аналитика в реальном времени — и научиться писать запросы, которые находят то, что нужно.

Курс «Elasticsearch: полнотекстовый поиск» состоит из 6 разделов и 19 уроков: Зачем нужен поисковый движок, Документы, индексы и REST API, Основы поиска, Релевантность и анализ текста, Продвинутый поиск и аналитика и Масштабирование и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Зачем нужен поисковый движок

    1. Проблема поиска: почему LIKE в SQL не работает

      Почему оператор LIKE в SQL медленный и неточный для текстового поиска и какие задачи он не решает.

    2. Что такое Elasticsearch и стек ELK

      Знакомство с Elasticsearch как распределённым поисковым движком и стеком ELK: Elasticsearch, Logstash, Kibana, Beats.

    3. Инвертированный индекс — сердце поиска

      Как устроен инвертированный индекс: словарь термов и постинг-листы, и почему он делает поиск по словам мгновенным.

  2. 2 Документы, индексы и REST API

    1. Документы, индексы и маппинг

      Что такое документ, индекс и маппинг в Elasticsearch, как поля получают типы и почему типы документов ушли в прошлое.

    2. REST API и формат запросов

      Как устроен REST API Elasticsearch: HTTP-методы, путь к индексу, тело запроса JSON и эндпоинт _search.

    3. Индексация документов: PUT, POST и bulk

      Как загружать данные в Elasticsearch: одиночная индексация через PUT и POST и массовая загрузка через эндпоинт _bulk.

  3. 3 Основы поиска

    1. match против term: анализируемые и точные поля

      Главное различие в поиске Elasticsearch: match анализирует запрос для полей text, term ищет точное значение в keyword.

    2. bool-запросы: must, should, must_not, filter

      Как комбинировать условия поиска в Elasticsearch через bool: must, should, must_not и filter и чем filter отличается от must.

    3. Как читать ответ _search

      Структура ответа Elasticsearch на поиск: took, hits, total, _score, _source и max_score.

  4. 4 Релевантность и анализ текста

    1. Релевантность: scoring, TF-IDF и BM25

      Как Elasticsearch оценивает релевантность: идея TF-IDF, формула BM25, частота терма, обратная частота и длина документа.

    2. Анализаторы и токенизация

      Как Elasticsearch превращает текст в термы: анализатор, символьные фильтры, токенизатор и токен-фильтры, эндпоинт _analyze.

    3. Стемминг, стоп-слова и языки

      Языковая обработка текста в Elasticsearch: стемминг и приведение к основе, стоп-слова и настройка анализа под русский язык.

  5. 5 Продвинутый поиск и аналитика

    1. Агрегации: аналитика поверх поиска

      Агрегации Elasticsearch: метрические и бакетные, terms и avg, как считать статистику и строить дашборды поверх поиска.

    2. Сортировка и пагинация: from/size и search_after

      Пагинация в Elasticsearch: from/size, проблема глубокой пагинации и решение через search_after для постраничного вывода.

    3. Подсветка, fuzzy-поиск и автодополнение

      Подсветка совпадений highlight, нечёткий fuzzy-поиск через edit distance и автодополнение в Elasticsearch.

  6. 6 Масштабирование и эксплуатация

    1. Шарды, реплики и кластер

      Как Elasticsearch масштабируется: первичные шарды и реплики, узлы и кластер, распределение и отказоустойчивость.

    2. Kibana и применения Elasticsearch

      Зачем нужна Kibana и где применяют Elasticsearch: анализ логов, поиск по сайту и аналитика в реальном времени.

    3. ES против обычной БД и ClickHouse

      Чем Elasticsearch отличается от реляционной БД и от ClickHouse: модель данных, транзакции, поиск и аналитика, когда что выбирать.

    4. Типичные ошибки: text/keyword, mapping explosion, тяжёлые агрегации

      Главные грабли Elasticsearch: путаница text и keyword, mapping explosion от динамических полей и тяжёлые агрегации.