Чому OpenSearch замість Elasticsearch?
Після зміни ліцензії Elasticsearch на SSPL компанія AWS форкнула останню open-source версію (7.10) і створила OpenSearch під ліцензією Apache 2.0. Він зберіг повну сумісність API, але додав вбудовані функції безпеки: TLS, RBAC, аудит — все безкоштовно, без покупки X-Pack. Для production це пряма заміна, яка до того ж економить до 70% витрат на ліцензії.
Ми розгорнули десятки кластерів OpenSearch для клієнтів — від стартапів до enterprise. В одному проекті мігрували 2 ТБ логів з Elasticsearch 6.8 на OpenSearch 2.12 за 4 дні. Основний reindex зайняв 2 години, решта — тести та тонке налаштування ISM. За даними документації OpenSearch, ISM повністю сумісний з Elasticsearch ILM.
Як ISM керує життєвим циклом індексів?
ISM (Index State Management) — аналог ILM в Elasticsearch. Політика керує життєвим циклом індексів: hot → warm → delete. Приклад для логів:
PUT _plugins/_ism/policies/logs-policy
{
"policy": {
"description": "Log retention policy",
"default_state": "hot",
"states": [
{
"name": "hot",
"actions": [
{
"rollover": {
"min_index_age": "1d",
"min_primary_shard_size": "50gb"
}
}
],
"transitions": [
{
"state_name": "warm",
"conditions": {
"min_index_age": "7d"
}
}
]
},
{
"name": "warm",
"actions": [
{
"force_merge": {
"max_num_segments": 1
}
},
{
"replica_count": {
"number_of_replicas": 0
}
}
],
"transitions": [
{
"state_name": "delete",
"conditions": {
"min_index_age": "30d"
}
}
]
},
{
"name": "delete",
"actions": [
{
"delete": {}
}
],
"transitions": []
}
],
"ism_template": [
{
"index_patterns": ["logs-*"],
"priority": 100
}
]
}
}Політика автоматично перекочує індекси, коли розмір первинного шарда перевищує 50 ГБ або вік більше доби. Через 7 днів — force merge до одного сегмента та зняття реплік. Через 30 днів — видалення.
Розгортання через Docker Compose
---
# docker-compose.yml
version: '3'
services:
opensearch-node1:
image: opensearchproject/opensearch:2.12.0
container_name: opensearch-node1
environment:
- cluster.name=opensearch-cluster
- node.name=opensearch-node1
- discovery.seed_hosts=opensearch-node1,opensearch-node2
- cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g"
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_ADMIN_PASSWORD}
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- opensearch-data1:/usr/share/opensearch/data
ports:
- 9200:9200
- 9600:9600
opensearch-node2:
image: opensearchproject/opensearch:2.12.0
container_name: opensearch-node2
environment:
- cluster.name=opensearch-cluster
- node.name=opensearch-node2
- discovery.seed_hosts=opensearch-node1,opensearch-node2
- cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g"
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_ADMIN_PASSWORD}
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- opensearch-data2:/usr/share/opensearch/data
opensearch-dashboards:
image: opensearchproject/opensearch-dashboards:2.12.0
container_name: opensearch-dashboards
ports:
- 5601:5601
environment:
OPENSEARCH_HOSTS: '["https://opensearch-node1:9200","https://opensearch-node2:9200"]'
volumes:
opensearch-data1:
opensearch-data2:
Цей compose піднімає два вузли з маппінгом портів 9200 та 5601. Важливо: задайте пароль через змінну середовища, а в ulimits увімкніть memlock для стабільності.
Вбудовані можливості безпеки
На відміну від open-source Elasticsearch (без X-Pack), OpenSearch включає Security plugin безкоштовно: TLS, RBAC, аудит дій, LDAP/SAML інтеграція. Конфігурація ролей:
---
# roles.yml
log_reader:
cluster_permissions:
- 'cluster:monitor/health'
index_permissions:
- index_patterns:
- 'logs-*'
allowed_actions:
- 'read'
- 'indices:monitor/stats'
Для production обов'язково увімкніть TLS, налаштуйте RBAC для сервісних акаунтів та увімкніть аудит.
Приклад налаштування аудиту
Увімкніть аудит у opensearch.yml: `plugins.security.audit.type: internal_opensearch`. Це запише всі події в окремий індекс.Як мігрувати з Elasticsearch на OpenSearch?
Міграція складається з трьох етапів:
- Порівняння версій та плагінів — перевірте сумісність custom-плагінів.
- Перенесення даних — використовуйте
reindexабо snapshot/restore. - Перемикання клієнтів — достатньо змінити endpoint у конфігах застосунків.
Приклад reindex в Python:
from opensearchpy import OpenSearch
client = OpenSearch(['http://old-elastic:9200'])
reindex_body = {
"source": {"index": "old_index"},
"dest": {"index": "new_index", "host": "http://new-opensearch:9200"}
}
client.reindex(body=reindex_body)На практиці міграція індексу розміром до 1 ТБ займає 2–3 години залежно від мережі та заліза. Зв'яжіться з нами для попередньої оцінки вашого проекту — ми підберемо оптимальний план міграції.
Етапи міграції з Elasticsearch на OpenSearch
| Етап | Дія | Приблизний час |
|---|---|---|
| Аудит | Перевірка версій, плагінів, індексів | 1 день |
| Розгортання | Встановлення кластера OpenSearch + Dashboards | 1 день |
| Перенесення даних | Snapshot/restore або reindex | 2-3 години на 1 ТБ |
| Тестування | Перевірка сумісності та продуктивності | 1-2 дні |
| Перемикання | Зміна endpoint у застосунках | 1 година |
Вартість розраховується індивідуально залежно від обсягу даних та складності інфраструктури. Отримайте консультацію — ми підготуємо точний кошторис.
Порівняння OpenSearch і Elasticsearch
| Критерій | OpenSearch | Elasticsearch |
|---|---|---|
| Ліцензія | Apache 2.0 | SSPL (комерційна) |
| Безпека | Вбудована (TLS, RBAC, аудит) | Тільки в платній підписці |
| Сумісність API | Повна з Elasticsearch 7.10 | Власна |
| Вартість | Безкоштовно | Безкоштовний функціонал обмежений |
| Спільнота | Активна, AWS спонсорує | Величезна, але комерційна |
OpenSearch в 2–3 рази дешевший в production через відсутність платних ліцензій на безпеку. Економія на ліцензіях може сягати 70% від витрат на інфраструктуру. При цьому стабільність не гірша — ми експлуатуємо кластери з аптаймом 99.99%.
Що входить у роботу
- Аудит поточної інфраструктури Elasticsearch (версія, плагіни, навантаження)
- Розгортання кластера OpenSearch (3+ ноди) з ISM та Security
- Міграція даних з мінімальним downtime (snapshot → reindex)
- Налаштування OpenSearch Dashboards та моніторингу (Prometheus + Grafana)
- Документація (runbook, політики, схеми мережі)
- Навчання команди замовника (2–3 сесії)
- Підтримка в перший місяць після запуску
Терміни: від 3 до 7 днів на кластер до 10 нод. Вартість розраховується індивідуально. Замовте аудит вашої системи — зв'яжіться з нами.
Чому варто довірити міграцію нам
Ми — команда DevOps-інженерів з багаторічним досвідом у production-інсталяціях пошукових систем. Реалізували 50+ проектів з міграції з Elasticsearch на OpenSearch для банків, e-commerce та SaaS. Всі кластери працюють під навантаженням до 100 000 запитів на секунду.
Гарантуємо: повну сумісність API, відсутність втрати даних та покроковий план відкату. Отримайте консультацію щодо вашого проекту — зв'яжіться з нами.







