הגדרת Elasticsearch/OpenSearch לחיפוש במג'נטו 2

כאשר החיפוש הסטנדרטי ב-Magento 2 אינו מצליח להתמודד עם קטלוג גדל, הלקוחות לא מוצאים מוצרים ופונים למתחרים. אנו מגדירים עבורכם את Elasticsearch או OpenSearch, ומבטיחים חיפוש מהיר ומדויק עם תמיכה במורפולוגיה רוסית. הצוות שלנו מספק פתרון מלא—מבדיקת המערכת הנוכחית ועד ליישום ותמיכה שוטפת—כך שהחנות המקוונת שלכם פועלת באופן אמין.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת Elasticsearch/OpenSearch לחיפוש במג'נטו 2
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1050
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

בפרויקטים עם קטלוגים העולים על 10,000 פריטים (SKU), חיפוש MySQL הסטנדרטי ב-Magento 2 גרם לעיכובים של 3–5 שניות לכל שאילתה, והרלוונטיות נפגעה—מוצרים לא נמצאו על ידי התאמות חלקיות או מורפולוגיה. החל מגרסה 2.4.0, חיפוש MySQL הוסר לחלוטין מהליבה, וElasticsearch או OpenSearch הפכו לחובה. אנו מגדירים את תשתית החיפוש כך שמשתמשים יקבלו תוצאות מדויקות תוך 100–200 אלפיות השנייה, ושיעורי ההמרה יעלו ב-15–30%.

מדוע Elasticsearch/OpenSearch הם חובה עבור Magento

גרסאות מודרניות של Magento (2.4.4+) אינן תומכות בחיפוש MySQL. ללא Elasticsearch או OpenSearch, לא ניתן לבצע חיפוש טקסט מלא, סינון לפי פנים (faceted filtering), או השלמה אוטומטית. OpenSearch, פיצול של Elasticsearch עם רישיון Apache 2.0, עדיף לפרויקטים חדשים—הוא מפותח באופן פעיל יותר ואין לו הגבלות שימוש. מקורות: Elasticsearch בוויקיפדיה, האתר הרשמי של OpenSearch

גרסת Magento Elasticsearch OpenSearch
2.4.3 7.10
2.4.4–2.4.5 7.16–7.17 1.x
2.4.6 8.x 2.x
2.4.7+ 8.x 2.x

OpenSearch מציג תכונות חדשות מהר יותר (לדוגמה, חיפוש k-NN) ויש לו מודל פיתוח שקוף יותר.

כיצד אנו מגדירים חיפוש לשפה הרוסית

המנתח הסטנדרטי של Magento אינו מתחשב במורפולוגיה רוסית: המילה 'платье' לא תמצא את 'платья'. אנו מחברים את התוסף analysis-icu ומגדירים מנתח מותאם אישית:

לחצו לצפייה בתצורת המנתח
PUT /magento2_product_1/_settings
{
  "analysis": {
    "analyzer": {
      "russian_search": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": ["lowercase", "russian_stop", "russian_stemmer"]
      }
    },
    "filter": {
      "russian_stop": {
        "type": "stop",
        "stopwords": "_russian_"
      },
      "russian_stemmer": {
        "type": "stemmer",
        "language": "russian"
      }
    }
  }
}

גישה זו משפרת את הרלוונטיות ב-40–60% בהשוואה למנתח ברירת המחדל. ללא זה, משתמשים דוברי רוסית לא ימצאו מוצרים לפי נטיות ומילות יחס, מה שיפחית ישירות את ההמרה.

מה זה Reindexing ללא השבתה (Zero-Downtime)?

Magento משתמש בסכימת כינויים (alias): PUT /magento2_product_1/_settings { "analysis": { "analyzer": { "russian_search": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "russian_stop", "russian_stemmer"] } }, "filter": { "russian_stop": { "type": "stop", "stopwords": "_russian_" }, "russian_stemmer": { "type": "stemmer", "language": "russian" } } } } (פעיל) ו-magento2_product_1 (במהלך reindexing). זה מאפשר עדכון האינדקס ללא עצירת החיפוש—חיסכון בתשתית באמצעות reindex ללא השבתה. מיפוי מאפיינים מנוהל דרך magento2_product_1_v2. מאפיינים מותאמים אישית המסומנים כ-Magento\Elasticsearch\Model\Adapter\FieldMapper או searchable נכללים אוטומטית באינדקס:

class CustomFieldMapper extends FieldMapper {
    public function getFieldName($attributeCode, $context = []) {
        if ($attributeCode === 'ean_code') {
            return 'keyword_ean_code'; // точное совпадение
        }
        return parent::getFieldName($attributeCode, $context);
    }
}

סכימת הכינויים מבטיחה שבמהלך בניית האינדקס מחדש, האינדקס הישן נשאר פעיל. לאחר השלמתו, האינדקס מוחלף בצורה אטומית. זה מונע אובדן נתונים והשבתות.

התקנת OpenSearch לסביבת ייצור

אנו ממליצים על Docker או התקנה מחבילה על שרת נפרד. לפיתוח, תצורת צומת יחיד מתאימה:

---
# docker-compose.yml
services:
  opensearch:
    image: opensearchproject/opensearch:2.11.0
    environment:
      - discovery.type=single-node
      - DISABLE_SECURITY_PLUGIN=true
      - OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g
    ports:
      - "9200:9200"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - opensearch-data:/usr/share/opensearch/data
---

באשכול ייצור, מינימום 3 צמתים (1 ראשי + 2 נתונים). דוגמה לתצורת צומת נתונים:

# /etc/opensearch/opensearch.yml
cluster.name: magento-search
node.name: data-node-1
node.roles: [data, ingest]
network.host: 0.0.0.0
discovery.seed_hosts: ["master-node:9300"]
cluster.initial_cluster_manager_nodes: ["master-node"]
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
indices.memory.index_buffer_size: 20%
thread_pool.write.queue_size: 1000

בנוסף, הגדירו גודל heap שלא יעלה על 50% מהזיכרון הזמין והפעילו ניטור דרך filterable.

חיבור Magento ל-OpenSearch

bin/magento config:set catalog/search/engine opensearch
bin/magento config:set catalog/search/opensearch_server_hostname 127.0.0.1
bin/magento config:set catalog/search/opensearch_server_port 9200
bin/magento config:set catalog/search/opensearch_index_prefix magento2
bin/magento config:set catalog/search/opensearch_enable_auth 0
bin/magento config:set catalog/search/opensearch_server_timeout 15
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento cache:flush
curl -X GET "localhost:9200/_cat/indices/magento2*?v&pretty"
curl -X GET "localhost:9200/magento2_product_1/_mapping?pretty" | head -80

כיצד להגדיר רלוונטיות שלב אחר שלב

  1. הגדירו משקלי מאפיינים (שם, תיאור) בניהול Magento (ערכים 1–10).
  2. שנו תכנותית את class CustomFieldMapper extends FieldMapper { public function getFieldName($attributeCode, $context = []) { if ($attributeCode === 'ean_code') { return 'keyword_ean_code'; // точное совпадение } return parent::getFieldName($attributeCode, $context); } } עבור כללים מותאמים אישית.
  3. הפעילו # docker-compose.yml services: opensearch: image: opensearchproject/opensearch:2.11.0 environment: - discovery.type=single-node - DISABLE_SECURITY_PLUGIN=true - OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g ports: - "9200:9200" ulimits: memlock: soft: -1 hard: -1 volumes: - opensearch-data:/usr/share/opensearch/data עבור שדות בעלי משקל גבוה—זה מתקן שגיאות כתיב.
  4. הוסיפו מנתח שפה רוסית מותאם אישית (כפי שהוצג לעיל).
  5. בדקו תוצאות דרך יומני איטיות (slow logs) וכיוונו ספים.

שיפור בהמרת חיפוש מגדיל ישירות את רווחיות החנות. אנו ממליצים להתחיל בסקר של התצורה הנוכחית שלכם—זה לוקח לא יותר משעה.

מה כלול בעבודת הגדרת החיפוש

  • סקר של התצורה והביצועים הנוכחיים
  • התקנה והגדרה של אשכול OpenSearch (או Elasticsearch)
  • אינטגרציה עם Magento 2, כולל מנתחים ומשקלים מותאמים אישית
  • אופטימיזציה לשפה הרוסית (מורפולוגיה, stemming)
  • הגדרת אינדקסי כינויים ל-reindex ללא השבתה
  • הגדרת ניטור (יומני איטיות, בריאות האשכול)
  • תיעוד והדרכת צוות
  • תמיכה לאחר השקה (חודש אחד)

אנו משלימים הגדרה סוהר תוך 3–5 ימים, תלוי במורכבות הקטלוג. פרויקטים טיפוסיים עולים בין $1,500 ל-$4,000. עם ניסיון של 5+ שנים ולמעלה מ-50 פרויקטי חיפוש Magento מוצלחים, אנו מבטיחים שיפור ברלוונטיות החיפוש ועלייה מדידה בשיעורי ההמרה. צרו קשר לייעוץ—נעריך את הפרויקט שלכם ונציע פתרון אופטימלי. קבלו ייעוץ על הגדרת חיפוש Magento 2—נעריך את הצרכים שלכם ונספק הגדרה מותאמת אישית.

לוחות זמנים להגדרה

שלב משך
התקנת OpenSearch + חיבור יום אחד
אשכול 3 צמתים עם שכפול 1–2 ימים
התאמת מנתחים ומשקלים 2–3 ימים
אינטגרציה עם Smile ElasticSuite 3–5 ימים

ניטור ופתרון תקלות

מדדים מרכזיים: שימוש ב-Heap (לא מעל 75% מ-# /etc/opensearch/opensearch.yml cluster.name: magento-search node.name: data-node-1 node.roles: [data, ingest] network.host: 0.0.0.0 discovery.seed_hosts: ["master-node:9300"] cluster.initial_cluster_manager_nodes: ["master-node"] path.data: /var/lib/opensearch path.logs: /var/log/opensearch indices.memory.index_buffer_size: 20% thread_pool.write.queue_size: 1000 ), זמן השהיית חיפוש (p95 < 200 אלפיות השנייה), קצב אינדוקס. לאבחון אנו משתמשים ביומני איטיות. בעיה נפוצה: heap size. פתרון—מחקו וצרו מחדש את האינדקס באמצעות _cluster/health. קבלו ייעוץ אם אתם זקוקים לעזרה במקרים לא סטנדרטיים. צרו קשר כדי לדון בפרטים.