Почему 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 documentation, 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, отсутствие потери данных и пошаговый план отката. Получите консультацию по вашему проекту — свяжитесь с нами.







