Налаштування OpenSearch: міграція з Elasticsearch і розгортання

Пошук починає гальмувати або видавати нерелевантні результати, коли кластер зібрано нашвидкуруч. Ми налаштовуємо OpenSearch під ключ: переносимо дані з Elasticsearch, розгортаємо кластер і налаштовуємо права доступу. Замовник отримує стабільний пошук і зрозумілий план розвитку без зупинки сервісу.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування OpenSearch: міграція з Elasticsearch і розгортання
Складний
~3-5 днів
Часті запитання

Налаштування OpenSearch: де ламається пошук після міграції

Перше, що ламається під час перенесення пошукового кластера, — не сам пошук, а довіра до нього: видача починає віддавати вчорашні товари, фільтри знаходять не те, а частина документів зникає з результатів.

Причина майже завжди одна — розсинхронізація індексів: переливання даних іде окремо від переливання налаштувань, і кластер якийсь час живе з половиною правил. Якщо це помітили не одразу, розходження встигає піти в прод і спливає вже на живих користувачах.

Друга типова поломка — просідання швидкості пошукової видачі після переїзду.

На старому кластері шарди були розкладені під реальний профіль запитів, а на новому їх розкидали «за замовчуванням»: важкі агрегації починають конкурувати з точковими запитами, і час відповіді зростає в рази за того самого заліза.

Окремо спливають роз'їхалися мапінги полів: там, де раніше був keyword для точного збігу, виявляється text з розбивкою за словами — і сортування за ціною або артикулом перестає працювати коректно.

Третій шар — втрачені аналізатори та ланцюжки нормалізації. Російська морфологія, синоніми, обробка одруків і стоп-слова живуть у конфігурації кластера, а не в даних, і під час міграції з Elasticsearch їх легко не перенести.

Зовні пошук працює, але «кросівки» перестають знаходити «кросівок», а бренди з дефісом випадають із фільтрів. Саме на цьому етапі замовник найчастіше дізнається, що переносили дані, а не пошукову логіку.

Ми починаємо з інвентаризації: знімаємо реальні мапінги, аналізатори та шаблони індексів, звіряємо їх із цільовою конфігурацією і лише потім плануємо переливання. Далі — контрольоване перемикання з перевіркою на тіньовому трафіку. Нижче розбираємо, як кожен із цих відмов закривається на етапі налаштування OpenSearch.

Що дає правильно налаштований кластер пошуку

Час відгуку перестає залежати від обсягу даних

Коректне налаштування шардингу та реплік — це коли пошук видає результат за десятки мілісекунд навіть при зростанні каталогу в рази.

Ми підбираємо кількість шардів під реальний обсяг і профіль запитів, а не «за замовчуванням»: неправильне дроблення — найчастіша причина, чому кластер починає гальмувати на рівному місці.

Окремо налаштовуємо кешування фільтрів і агрегацій, щоб повторювані запити не перераховувалися заново.

Переіндексація відбувається передбачувано і без простою

Зміна мапінгу або структури документа не повинна перетворюватися на нічний кошмар із зупинкою пошуку. Ми налаштовуємо аліаси та перемикаємо трафік на новий індекс атомарно — старий залишається доступним до моменту готовності нового.

Паралельне завантаження через bulk-операції з підібраним розміром пакета тримає навантаження на кластер рівним, а не піками.

Кластер переживає відмову вузла без втрати даних

Репліки та налаштування розподілу шардів забезпечують відмовостійкість: при випадінні вузла пошук продовжує працювати, а дані відновлюються автоматично. Ми перевіряємо це навмисно — гасимо вузол у тестовому контурі та дивимося, як кластер перерозподіляє навантаження. Цілісність індексів підтверджується звіркою кількості документів до і після збою.

Цілісність індексів під контролем

Налаштовуємо перевірки стану кластера та оповіщення про «жовтий» і «червоний» статус, щоб деградація не залишалася непоміченою. Регулярні знімки індексів дають точку відкату, а не надію на удачу. У результаті пошук працює стабільно, а команда дізнається про проблему раніше за користувачів.

Варіанти розгортання: хмара, власні сервери, гібрид

Вибір майданчика визначає не лише затримку запитів, а й те, хто відповідає за відмову шарда о третій годині ночі. Нижче — три режими розміщення пошукового кластера та їхні реальні обмеження щодо навантаження, супроводу та вартості володіння.

Варіант Коли підходить Обмеження
Керований пошук у хмарі Немає власної команди експлуатації, навантаження передбачуване, потрібен швидкий старт Менше контролю над версією та параметрами JVM-купи, зростання платежу при збільшенні кількості вузлів і обсягу індексів, прив'язка до провайдера
Власний кластер на серверах (on-premise) Дані не повинні залишати контур, стабільний профіль навантаження, є інженери Капітальні витрати на залізо та резерв, ви самостійно закриваєте оновлення, бекапи, моніторинг і заміну дисків
Гібридна схема Гарячі дані та запити в хмарі, архів і чутливі індекси — на своєму контурі Складніша мережа та синхронізація снапшотів, потрібен єдиний шар маршрутизації запитів і спільний моніторинг

Що реально змінює картину

Керований пошук знімає з команди рутину: оновлення безпеки, реплікація, снапшоти в об'єктне сховище — на боці провайдера. Платите за це меншою свободою в тонкому налаштуванні шардування та стелею за розміром кластера.

On-premise дає повний контроль над розкладкою індексів, розміром купи та політиками життєвого циклу, але потребує чергування та запасу заліза під пік. Гібрид закриває обидва сценарії, якщо правильно вибудувати реплікацію між контурами.

Ми розгортаємо кластер під конкретний профіль навантаження і фіксуємо в документації, що переходить до провайдера, а що залишається на вашій команді.

Етапи впровадження та налаштування OpenSearch

Роботи виконуються послідовними етапами: кожен наступний спирається на артефакти попереднього, тому пропуск будь-якого кроку випливає вже під навантаженням або в проді. Нижче — порядок, за яким ми ведемо проєкт від аудиту до передачі кластера вашій команді.

  1. Аудит пошукового кластера. Фіксуємо поточний стан: які індекси та аліаси існують, як влаштовані мапінги, де накопичуються невикористовувані поля, як розподілені шарди та репліки по вузлах, які запити створюють основне навантаження. На виході — карта вузьких місць і список того, що переносимо як є, а що перепроєктовуємо.
  2. Проєктування схеми індексів. Розкладаємо дані по індексах і аліасах так, щоб переіндексація та зміна налаштувань не вимагали зупинки пошуку. Визначаємо шаблони, життєвий цикл індексів і політику зберігання — старі дані йдуть за розкладом, гарячі залишаються швидкими.
  3. Налаштування аналізаторів. Збираємо ланцюжки токенізації та фільтрів під мову й характер запитів: словоформи, синоніми, одруки, морфологія. Перевіряємо на реальних пошукових фразах із логів, а не на синтетиці, — інакше аналізатор гарно працює в тесті й розвалюється на живому трафіку.
  4. Міграція даних і запитів. Переносимо індекси та переписуємо несумісні запити й агрегації, звіряючи видачу порядково. Розбіжності фіксуємо до перемикання, а не після.
  5. Навантажувальна перевірка. Проганяємо профіль реального трафіку з піками: дивимося час відгуку на перцентилях, поведінку при відмові вузла, швидкість відновлення шардів. Підбираємо кількість шардів і реплік за фактом, а не за формулою з документації.
  6. Розгортання та моніторинг. Налаштовуємо кластер у проді, знімаємо метрики за затримками, відмовами та споживанням ресурсів, заводимо оповіщення на деградацію.
  7. Передача в експлуатацію. Віддаємо регламенти, схеми та інструкції за типовими операціями — ваша команда далі веде кластер самостійно.

Опишіть вашу задачу — повернемося з оцінкою та планом за цими етапами.

Політики доступу, ролі та розмежування прав

У OpenSearch розмежування прав будується на трьох рівнях: кластерні права, права на індекси та права на документи. Роль — це іменований набір дозволів, який призначається користувачу або сервісному обліковому запису.

Кластерні права відповідають за управління самим кластером: знімки, налаштування, моніторинг. Індексні — за читання, запис, видалення та управління конкретними індексами або шаблонами.

Таке розділення дозволяє надати сервісу запису лише в свій індекс і не дати йому можливості змінювати стан кластера.

Індексні шаблони прав задаються масками: logs-app-* для застосунку, logs-search-* для пошукового сервісу. Маска закриває одразу групу індексів, включно з майбутніми — не потрібно переписувати роль при кожному новому індексі.

Для мультитенантних сценаріїв права звужуються до документів через запит-фільтр: користувач бачить лише свої записи, хоча фізично лежить усе в одному індексі.

Аудит дій вмикається на рівні кластера і пише події доступу в окремий індекс. У журнал потрапляють: хто, коли, до якого індексу звернувся і з яким результатом.

Це дає основу для розбору інцидентів і підтвердження відповідності вимогам — видно не лише факт відмови, а й спроби обходу прав.

Окремо налаштовуються службові ролі: для знімків, для моніторингу, для реплікації між кластерами. Їх видають не людям, а сервісним обліковим записам з обмеженим терміном життя.

Ротація таких облікових записів іде за розкладом, а не вручну — інакше доступи копіюються між командами і перестають щось обмежувати.

Практика показує: без явної моделі ролей кластер швидко перетворюється на «усі бачать усе». Ми починаємо з інвентаризації сервісів, для кожного фіксуємо мінімально необхідний набір прав, і лише після цього вмикаємо аудит — інакше журнал заповниться шумом від зайвих дозволів.

Що отримує замовник після налаштування кластера

Після налаштування кластера замовник отримує не «працюючий пошук», а комплект артефактів, за якими систему можна експлуатувати, розширювати й передавати іншій команді без нас. Нижче — що саме залишається в репозиторії та в документації.

  • Конфігурація кластера — файли налаштувань вузлів і ролей, параметри шардування та реплікації, політики розподілу шардів за зонами доступності. Розгортання відтворюється з цих файлів, а не «з пам'яті інженера».
  • Схема індексів — опис індексів, їхніх шаблонів і зв'язків: які поля аналізуються, які зберігаються як є, де застосовуються синоніми та правила розбору тексту. Схема фіксує, чому пошук знаходить потрібне, а не просто «так налаштовано».
  • Політики життєвого циклу — правила ротації індексів і знімків: скільки даних тримаємо в гарячому шарі, коли переводимо в холодний, як часто знімаємо резервні копії та скільки зберігаємо. Реєстр перестає зростати безконтрольно, а відкат до попереднього стану залишається можливим.
  • Регламент обслуговування — порядок планових робіт: оновлення вузлів без простою, перевірка здоров'я кластера, реакція на переповнення диска та зростання затримок запитів. З ним черговий розуміє, що робити, без дзвінка розробнику.
  • Моніторинг і оповіщення — набір метрик стану кластера та пороги, за яких надходить сигнал: затримка пошуку, черга запитів, стан шардів, вільне місце. Проблему видно до того, як її помітить користувач.
  • Документація пошуку — карта індексів, словник полів, приклади типових запитів і розбір частих помилок. Новий інженер входить у проєкт за нею, а не за листуванням.
  • Процедура міграції — покроковий план перенесення з попереднього пошукового рушія: порядок перемикання, перевірка повноти даних, точка повернення. Міграція проходить без зупинки сервісу для користувачів.

Цей комплект і є результатом налаштування: кластер можна розвивати, масштабувати й обслуговувати силами своєї команди. Опишіть вашу задачу — повернемося з оцінкою та планом робіт.

Чим відрізняється налаштування OpenSearch від Elasticsearch?

Формально OpenSearch — форк Elasticsearch, і базовий API пошуку та індексації сумісний: запити _search, _bulk, мапінги та аналізатори переносяться без переписування. Але сумісність не означає ідентичність, і відмінності вилазять саме на рівні конфігурації, а не коду застосунку.

Ключова відмінність — модель ліцензування та склад плагінів. В OpenSearch security, alerting, anomaly detection, SQL і dashboards входять у постачання й налаштовуються штатно, тоді як в Elasticsearch частина цих можливостей живе в окремій платній підписці.

Для конфігурації це означає: ролі, права на індекси та політики доступу описуються в тих самих файлах, але увімкнені за замовчуванням, і їх потрібно усвідомлено обмежувати, а не докуповувати.

Друге — управління кластером. Налаштування шардування, реплікації та lifecycle-політик задаються схожим синтаксисом, але імена параметрів і поведінка частини плагінів розійшлися після розділення проєктів.

Пряме перенесення elasticsearch.yml і шаблонів індексів «як є» дає мовчазні розходження: частина опцій ігнорується, частина змінює поведінку сегментів і швидкість зливань.

Під час міграції ми переносимо не файли, а сенс налаштувань: звіряємо мапінги та аналізатори, перезбираємо шаблони індексів, перевіряємо роботу плагінів пошуку і лише потім перемикаємо трафік. Так перенесення налаштувань не перетворюється на сюрприз на проді.

Кейс: міграція пошуку без простою сервісу

Проєкт — маркетплейс із каталогом на кілька мільйонів товарів: пошук і фасети трималися на Elasticsearch, кластер із кількох вузлів працював під постійним навантаженням.

Пікова індексація збігалася з ранковим трафіком, і в ці години пошук починав віддавати відповіді із затримкою, а частина запитів ішла в таймаут.

Окремий біль — оновлення мапінгу: переіндексація каталогу займала години, і весь цей час доводилося тримати два індекси й перемикати аліас вручну.

Що зробили

Розгорнули цільовий кластер паралельно з робочим і налаштували реплікацію так, щоб обидва тримали однаковий набір даних.

Індексацію пустили через чергу: спочатку пишемо в поточний кластер, потім програємо ті самі події в новий — розходження ловиться звіркою за контрольними сумами документів.

Трафік перемикали не одразу, а частками: спочатку невеликий відсоток читальних запитів, потім половина, потім весь потік. На кожному кроці звіряли метрики пошуку — частку повільних запитів, затримку відповіді та навантаження на кластер.

Що змінилося

Перемикання зайняло хвилини й пройшло без простою: користувачі не помітили зміни рушія. Частка запитів, що виходять за цільовий час відповіді, знизилася приблизно втричі, а пікове навантаження на кластер перестало впиратися в стелю — частина читання пішла на репліки.

Час відновлення після збою вузла скоротився з десятків хвилин до одиниць: репліки піднімаються автоматично, ручного втручання не потрібно.

Відкат передбачили заздалегідь — старий кластер залишався робочим до кінця спостереження, і повернутися на нього можна було тим самим перемиканням часток трафіку.

Обговоримо ваше завдання з налаштування пошуку

Налаштування пошуку — це завдання, де ціна помилки видна одразу: неправильний мапінг або невдала схема шардування проявляються не на тестовому індексі, а на бойовому трафіку, коли переіндексація займає години.

Тому ми починаємо не з конфігурації, а з розбору вашого сценарію: які дані та в якому обсязі індексуються, які запити критичні за швидкістю, чи потрібна підтримка морфології та синонімів, як влаштована видача сьогодні.

Щоб розмова була предметною, надсилайте вхідні дані — за ними наші інженери складуть план робіт та оцінку налаштування:

  • поточний стек пошуку та версію гілки (Elasticsearch або OpenSearch), обсяг індексів і добовий приріст даних;
  • перелік типових запитів із прикладами та вимогами до часу відгуку;
  • схему кластера: кількість вузлів, ролі, запас за ресурсами, наявність реплік;
  • як влаштоване завантаження даних — джерела, частота оновлення, чи потрібна інкрементальна переіндексація;
  • вимоги до ранжування: бусти за полями, синоніми, стоп-слова, автодоповнення;
  • обмеження щодо доступів, резервного копіювання та вікон обслуговування;
  • що вже пробували і на чому зупинилися, якщо міграція або налаштування буксує.

За цими даними ми повернемося з планом: етапи, порядок перемикання трафіку, точки відкату, склад робіт з міграції з Elasticsearch та розгортання. Консультація інженера на цьому кроці — не загальна розмова, а розбір вашої схеми індексів і вузьких місць видачі. Опишіть завдання у зручному форматі — повернемося з оцінкою та планом робіт.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1140
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060