Перейти к содержанию

Индекс: OpenSearch для Markdown-библиотеки

Создадим «Индекс» — отдельную поисковую копию собственной Markdown-библиотеки. Пройдём от договора полей к mappings и русскому анализу, загрузим документы, добавим точные фильтры, фасеты, безопасные фрагменты и управляемое ранжирование. Затем разберём изменения, удаления, aliases, reindex, доступ и сопровождение.

Серия посвящена операциям поискового движка и его индекса. Общая модель поиска уже раскрыта в поиске по сайту, векторный маршрут — в RAG и pgvector. Эти курсы не являются обязательным скрытым источником кода нового проекта. Достаточно знакомства с Python, HTTP, JSON и Markdown.

Python 3.13, OpenSearch 3.9.0; сторонних Python-пакетов нет. Для импортёра требуется Unix-подобная среда с fcntl. Сервер читатель предоставляет отдельно.

Один владелец записи, один shard без replicas, узкий Markdown-формат, публичный фильтр без входа сотрудников и последовательный loopback HTTPServer. Пример не обещает производственную устойчивость, измеренное качество или автоматическую интеграцию с RabbitMQ.

Архив полного итогового проекта содержит реальные исходники, README, данные и карту этапов. Это один проект, не набор самостоятельных снимков уроков. Учебные приложения, broker/engine, базы, запросы, тесты и замеры при подготовке не запускались. Все результаты статей обозначены ожидаемыми.

Уроки и результаты

№ Урок Новый результат
01 OpenSearch: поисковый индекс как отдельная копия библиотеки Источник и проекция разделены
02 OpenSearch: подготовка Markdown для поисковой записи Полный корпус проверяется до сети
03 OpenSearch: явные mappings для текста и точных значений Пустой library-v1 имеет явные mappings
04 OpenSearch: русский анализатор и технические обозначения Русская цепочка и identifiers объяснены
05 OpenSearch: пакетный импорт и ошибки отдельных документов Bulk проверяет каждую операцию
06 OpenSearch: поиск по заголовку и основному тексту Создан первоначальный alias и запрос по полям
07 OpenSearch: фильтры рубрики, метки и видимости Рубрика, метка и видимость фильтруются
08 OpenSearch: фасеты и область подсчёта групп Фасеты учитывают ту же область
09 OpenSearch: подсветка совпадений без исполнения HTML Фрагменты строятся безопасно как текст
10 OpenSearch: управление ранжированием через контрольные запросы Предпочтения связаны с контрольными запросами
11 OpenSearch: изменения и удаления через манифест импорта Хеши и манифест задают инкрементальные действия
12 OpenSearch: перенос схемы и атомарное переключение aliases Новая схема переносится при паузе и переключении aliases
13 OpenSearch: публичный gateway и пределы поискового запроса Loopback API принимает только известные параметры
14 OpenSearch: сопровождение и передача проекта Индекс Health, свежесть и восстановление различаются

Восемь серий объединяет маршрут интерактивного веба.