OpenSearch כחלופה ל-Elasticsearch: העברה והתקנה
אשכול ה-Elasticsearch שלך פועל תחת רישיון SSPL, ואתה מחפש חלופה חסכונית מבלי לוותר על פונקציונליות. לאחר ש-Elasticsearch עברה לרישיון SSPL, AWS פיצלה את הגרסה האחרונה בקוד פתוח (7.10) ויצרה את OpenSearch תחת רישיון Apache 2.0. היא שומרת על תאימות API מלאה אך מוסיפה אבטחה מובנית: TLS, RBAC, ביקורת (audit) — הכל בחינם, ללא צורך ברכישת X-Pack. עבור סביבת production, מדובר בתחליף ישיר שיכול לחסוך עד 70% מעלויות הרישוי.
פרסנו עשרות אשכולות OpenSearch עבור לקוחות, מחברות סטארטאפ ועד ארגונים גדולים. בפרויקט אחד, העברנו 2 TB של לוגים מ-Elasticsearch 6.8 ל-OpenSearch 2.12 בארבעה ימים. ה-reindex העיקרי ארך שעתיים; שאר הזמן הוקדש לבדיקות ולכיוונון ISM. לפי תיעוד OpenSearch, ISM תואם לחלוטין ל-ILM של Elasticsearch.
כיצד 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
}
]
}
}המדיניות מבצעת rollover אוטומטי לאינדקסים כאשר ה-shard הראשי עולה על 50 GB או שהגיל עולה על יום אחד. לאחר שבעה ימים, היא מבצעת 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. חשוב: הגדר את הסיסמה באמצעות משתנה סביבה וכלול memlock ב-ulimits ליציבות.
תכונות אבטחה מובנות
בניגוד ל-Elasticsearch בקוד פתוח (ללא X-Pack), OpenSearch כוללת את תוסף האבטחה (Security) בחינם: TLS, RBAC, תיעוד ביקורת (audit logging), אינטגרציה עם LDAP/SAML. הנה דוגמה להגדרת תפקיד (role):
---
# roles.yml
log_reader:
cluster_permissions:
- 'cluster:monitor/health'
index_permissions:
- index_patterns:
- 'logs-*'
allowed_actions:
- 'read'
- 'indices:monitor/stats'
---לסביבת production, תמיד הפעל TLS, הגדר RBAC עבור חשבונות שירות, והפעל ביקורת (auditing).
דוגמה להגדרת ביקורת
הפעל ביקורת ב-`opensearch.yml`: `plugins.security.audit.type: internal_opensearch`. זה כותב את כל האירועים לאינדקס ייעודי.כיצד אנו מעבירים מ-Elasticsearch ל-OpenSearch
ההעברה מורכבת משלושה שלבים:
- ביקורת (Audit) – השוואת גרסאות ותוספים, בדיקת תאימות תוספים מותאמים אישית.
-
העברת נתונים – שימוש ב-
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 } ] } }או snapshot/restore. - מעבר לקוחות – שינוי ה-endpoint בתצורות האפליקציה.
דוגמה ל-reindex בפייתון:
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 TB אורכת 2–3 שעות בהתאם לרשת ולחומרה. צור קשר להערכה ראשונית של הפרויקט שלך – נתכנן את תוכנית ההעברה האופטימלית.
שלבי העברה מ-Elasticsearch ל-OpenSearch
| שלב | פעולה | זמן אופייני |
|---|---|---|
| ביקורת | בדיקת גרסאות, תוספים, אינדקסים | יום אחד |
| פריסה | התקנת אשכול OpenSearch + Dashboards | יום אחד |
| העברת נתונים | Snapshot/restore או reindex | 2–3 שעות ל-TB |
| בדיקות | אימות תאימות וביצועים | 1–2 ימים |
| מעבר | שינוי endpoints באפליקציות | שעה אחת |
העלות נקבעת לפי פרויקט בהתאם לנפח הנתונים ולמורכבות התשתית. קבל ייעוץ – נספק הערכה מדויקת.
השוואה: 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 ואבטחה
- העברת נתונים עם זמן השבתה מינימלי (snapshot → reindex)
- הגדרת OpenSearch Dashboards וניטור (Prometheus + Grafana)
- תיעוד (runbook, מדיניות, דיאגרמות רשת)
- הדרכה לצוות שלך (2–3 מפגשים)
- חודש תמיכה לאחר ההשקה
לוח זמנים: 3 עד 7 ימים עבור אשכול עד 10 צמתים. העלות נקבעת באופן אישי. בקש ביקורת על המערכת שלך – צור קשר.
למה להפקיד בידינו את ההעברה שלך?
אנחנו צוות של מהנדסי DevOps עם ניסיון של למעלה מעשור בסביבות production עם מערכות חיפוש. השלמנו למעלה מ-50 פרויקטי העברה מ-Elasticsearch ל-OpenSearch עבור בנקים, חברות מסחר אלקטרוני וחברות SaaS. כל האשכולות פועלים תחת עומסים של עד 100,000 שאילתות בשנייה.
אנו מבטיחים תאימות API מלאה, אפס אובדן נתונים, ותוכנית rollback שלב אחר שלב. קבל ייעוץ לפרויקט שלך – צור קשר.







