ElasticSearch 8 с нуля
Справочник по Elasticsearch 8
34Lessons
8Modules
RUEncyclopedia
Contents
1
Основы Elasticsearch и модель данных
1
Что такое Elasticsearch и зачем он нужен
Поисково-аналитический движок поверх Lucene: где его применяют, чем он отличается от обычной БД и почему это near real-time, а не источник истины.
2
Документ, индекс и JSON: модель данных
Документ как JSON-объект, поля, индекс как коллекция документов и метаполя вроде _id и _source — основные сущности, которыми оперирует ES.
3
Кластер, ноды, шарды и реплики
Как данные распределяются: кластер из нод, primary- и replica-шарды, что такое отдельный индекс Lucene внутри шарда и зачем нужны реплики.
4
Типы полей: text, keyword, числа и даты
Ключевое различие text и keyword, числовые поля, даты, объекты и приём multi-field, когда одно поле индексируют сразу несколькими типами.
5
Инвертированный индекс и движок Lucene
Что на самом деле строится при индексации: инвертированный индекс «термин → документы», сегменты Lucene и почему полнотекстовый поиск такой быстрый.
2
Установка и первый доступ
6
Способы развернуть Elasticsearch 8: Docker, Elastic Cloud, self-managed и ECK
Обзор вариантов запуска и их различий: локальный Docker для экспериментов, управляемый Elastic Cloud, установка на свои серверы и оператор ECK в Kubernetes.
7
Безопасность по умолчанию в Elasticsearch 8
Что меняет включённая «из коробки» защита: TLS, аутентификация, enrollment-токен, пароль пользователя elastic и как из-за этого выглядят первые запросы.
8
Kibana Dev Tools и работа через REST API
Console в Kibana как основной инструмент: структура REST-запроса (метод, путь, тело), те же запросы через curl и заголовки авторизации.
3
Работа с данными через REST API
9
CRUD-операции над документами
Индексация, чтение, обновление и удаление документа через _doc: автогенерация и явный _id, версионирование, частичный update и upsert.
10
Массовая загрузка данных через Bulk API
Формат NDJSON, действия index/create/update/delete в одном запросе, разбор ответа и типичные ошибки при заливке больших объёмов.
11
Маппинг: явный, динамический и шаблоны индексов
Как задать схему заранее, как ES угадывает типы динамически и почему маппинг нельзя менять задним числом; index templates для единообразных индексов.
12
Служебные API: _cat, здоровье кластера и настройки
Быстрый осмотр системы через _cat (indices, nodes, shards), статусы health green/yellow/red и просмотр настроек индекса.
4
Текстовый анализ
13
Анатомия анализатора: char filters, токенизатор, token filters
Конвейер анализа от сырого текста к токенам, разница между index- и search-анализом и проверка результата через API _analyze.
14
Анализ английского текста: стемминг и стоп-слова
Встроенный анализатор english: токенизация, приведение к нижнему регистру, snowball-стемминг и стоп-слова — на конкретных примерах запросов.
15
Анализ русского текста: морфология, стемминг, Hunspell
Встроенный анализатор russian, словарный разбор через Hunspell с локалью ru_RU и сторонние morphology-плагины; почему словоформы — главная сложность русского поиска.
16
Синонимы и кастомные анализаторы
Сборка собственного анализатора из фильтров, работа synonym и synonym_graph, синонимы на этапе индексации и поиска, обновление словарей.
5
Полнотекстовый поиск и Query DSL
17
Query DSL: структура запроса и контекст query vs filter
Как устроено тело _search, чем query context (влияет на _score) отличается от filter context (да/нет, кешируется) и когда что использовать.
18
Полнотекстовые запросы: match, match_phrase, multi_match
Запросы по анализируемым полям: match и operator/minimum_should_match, поиск фразы через match_phrase и поиск по нескольким полям multi_match.
19
Точные совпадения и фильтры: term, range, exists
Запросы без анализа ввода по keyword-полям, диапазоны по числам и датам, проверка наличия поля и классическая ловушка term по text-полю.
20
Составные запросы: bool и комбинирование условий
Сборка сложных условий через must, should, filter и must_not, влияние веток на релевантность и minimum_should_match.
21
Подсветка, сортировка и пагинация результатов
Highlight совпавших фрагментов, сортировка по полям и по релевантности, пагинация from/size и её предел, переход на search_after и PIT.
22
Релевантность и BM25: как считается _score
Откуда берётся _score: модель BM25, влияние частоты терминов и длины поля, разбор оценки через explain.
23
Бустинг полей и function_score: управление ранжированием
Как поднять важность отдельных полей и документов: boost, function_score, учёт свежести и популярности при ранжировании.
24
Перколятор: обратный поиск по сохранённым запросам
Перевёрнутая модель поиска: запросы хранятся в индексе через тип поля percolator, а percolate-запрос прогоняет входящий документ и показывает, какие сохранённые запросы он удовлетворяет. Подсветка совпадений и сценарий алертов и подписок.
6
Векторный и семантический поиск
25
Векторный поиск: поле dense_vector и запрос kNN
Как хранить эмбеддинги в dense_vector, метрики похожести, точный и приближённый kNN на HNSW, параметры k и num_candidates на примерах запросов.
26
ELSER и разреженные векторы для семантики
Встроенная модель .elser_model_2: семантический поиск без своих эмбеддингов, поле sparse_vector и запросы semantic вместо устаревшего text_expansion.
27
Поле semantic_text и inference-эндпоинты
Самый простой путь к семантике: semantic_text с автоматическим чанкингом и генерацией эмбеддингов через inference endpoint, запрос semantic.
28
Гибридный поиск: retrievers и RRF
Объединение лексического и векторного поиска: синтаксис retrievers и Reciprocal Rank Fusion, почему гибрид обычно точнее каждого подхода по отдельности.
7
Агрегации и аналитика
29
Метрические и бакетные агрегации
Два базовых класса: метрики (avg, sum, stats, cardinality) и бакеты (terms, range, date_histogram); запрос только за агрегациями через size: 0.
30
Вложенные агрегации и аналитические сценарии
Под-агрегации внутри бакетов для срезов данных, типовые сценарии вроде статистики по категориям и распределений во времени.
31
Агрегации вместе с поиском и фильтрами
Как считать агрегации по отфильтрованной выборке, строить фасетную навигацию для каталога и сочетать их с полнотекстовым запросом.
8
Эксплуатация Elasticsearch
32
Снапшоты и восстановление данных
Единственный поддерживаемый способ бэкапа: snapshot repository, создание снапшотов через _snapshot и восстановление индексов.
33
Мониторинг и здоровье кластера
Статусы green/yellow/red, чтение _cat и _cluster/health, базовые метрики нагрузки и распространённые причины unassigned-шардов.
34
Безопасность: пользователи, роли и API-ключи
Модель доступа в ES 8: встроенные пользователи, роли и RBAC, API-ключи для приложений и место TLS в защите кластера.