Magento 2, katalog araması için bir arama motoruna ve çoğu kurulumda kategori sayfalarında katmanlı navigasyon için güvenmektedir. Son Magento 2.4 sürümleri OpenSearch kullanırken (eski sürümler Elasticsearch kullanmaktadır). Arama motorunda bir sorun olduğunda, belirtiler boş arama sonuçlarından ürün içermeyen kategori sayfalarına ve başarısız yeniden dizinlemelere kadar uzanır.
Bu kılavuz en yaygın hataları ve bunların nasıl düzeltileceğini kapsamaktadır.
İlk kontroller
Arama motoru çalışıyor ve sağlıklı mı?
curl -s http://localhost:9200
curl -s http://localhost:9200/_cluster/health?pretty
curl -s http://localhost:9200/_cat/indices?v
- yeşil: her şey yolunda
- sarı: replikalar atanmadı. Eğer indekslerde replikalar varsa, tek düğümlü bir kurulumda normaldir.
- kırmızı: birincil veriler eksik, dikkat gerektiriyor
Magento hangi motoru ve sunucuyu kullanıyor?
bin/magento config:show catalog/search/engine
bin/magento config:show catalog/search/opensearch_server_hostname
bin/magento config:show catalog/search/opensearch_server_port
(Elasticsearch için, yollar opensearch_ yerine elasticsearch7_ kullanır.)
Hata: “Bağlantı doğrulanamadı” / “Kümenizde canlı düğüm bulunamadı”
Magento arama motoruna ulaşamıyor.
Sebep ve çözümler:
- Hizmet durdu:
sudo systemctl status opensearchkomutunu çalıştırın ve günlüklerini kontrol edin. Genellikle bellek yetersizliğinden dolayı sonlandırılmıştır. - Magento yapılandırmasında yanlış ana bilgisayar veya port:
bin/magento config:set catalog/search/opensearch_server_hostname localhostile düzeltin. - Kimlik doğrulama etkin OpenSearch’te (güvenlik eklentisi) ancak Magento’da yapılandırılmamış: arama yapılandırmasında kullanıcı adını ve şifreyi ayarlayın veya arama motorunu buna göre yapılandırın.
- HTTPS vs HTTP uyumsuzluğu: OpenSearch’ün güvenlik eklentisi birçok kurulumda varsayılan olarak HTTPS’yi etkinleştirir.
- Güvenlik Duvarı veya Docker ağı: ana bilgisayar adı konteynerler içinde farklıdır (örneğin
opensearchyerinelocalhost)
Magento sunucusundan curl ile yapılandırılmış ana bilgisayar ve porta test edin.
Hata: dizin yalnızca okunur / “YASAK/12/dizin yalnızca okunur / silmeye izin ver”
Arama motoru, disk neredeyse dolduğunda yazmaları engeller (sel aşaması disk su işareti). Yeniden dizinleme başarısız olur.
Düzelt:
- Ücretsiz disk alanı (eski günlükler, yedeklemeler, kullanılmayan indeksler)
- İndekslerden bloğu kaldırın:
curl -X PUT "http://localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d '{"index.blocks.read_only_allow_delete": null}'
Son sürümler, disk kullanımının düştüğünde bloğu otomatik olarak kaldırır, ancak alanı boşaltmak her zaman ilk adımdır.
- Yeniden dizin oluştur:
bin/magento indexer:reindex catalogsearch_fulltext
Hata: devre kesme istisnası / “Veri çok büyük”
Arama motorunun istek için yeterli yığın belleği yok.
Düzelt:
- JVM yığınını artırın (
jvm.optionsveyaOPENSEARCH_JAVA_OPTSortam değişkeninde). Yaygın bir kural, yığını özel bir sunucudaki mevcut RAM’in yarısına kadar vermek ve minimum ile maksimum yığın miktarını eşit tutmaktır. - Sunucunun toplamda yeterli RAM’e sahip olduğundan emin olun; arama motoru, tek sunucu kurulumlarında MySQL ve PHP ile rekabet eder.
Arama veya kategori sayfalarından eksik ürünler
Sebepler:
- Reindex çalışmadı veya başarısız oldu:
bin/magento indexer:statuskontrol edin - Ürün aramada görünmüyor (görünürlük ayarı), devre dışı, “stokta yok” seçeneği kapalı veya web sitesine atanmış değil.
- Cron çalışmıyor, bu yüzden “Zamanlama ile Güncelle” indeksleyicileri değişiklikleri asla işlemiyor.
Düzelt:
bin/magento indexer:status
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento cache:flush
Ve cron’un çalıştığını kontrol edin (bkz. Magento 2 komutları kılavuzu).
Hata: “Sonuç penceresi çok büyük”
Büyük kataloglarda, birinin sonuçlarda çok derin sayfalara girmesi durumunda meydana gelir.
Düzelt: index.max_result_window değerini makul bir seviyede tutun ve ön uçta sayfalamayı ne kadar derinlemesine yapabileceğinizi sınırlayın, bunun yerine sınırı çok yüksek bir seviyeye çıkarmayın.
Reindex çok yavaş.
- Yavaş disklerde veya çok az yığın ile arama motoru
- Çok fazla aranabilir özellik: gerçekten “Aramada Kullan” ve “Katmanlı Navigasyonda Kullan” gerektiren özellikleri gözden geçirin.
- Yeni Magento sürümlerinde parti boyutu ayarları ve paralel yeniden dizinleme
- Veri toplama aşamasında MySQL performansı
Elasticsearch’ten OpenSearch’e Geçiş
Magento’u yükseltirken, Elasticsearch’tan OpenSearch’a geçmeniz gerekebilir:
- Hedef Magento sürümünüzün hangi sürümleri desteklediğini kontrol edin (bakın Magento 2’yi nasıl yükselteceğinizi)
- Eski motorun yanında OpenSearch’ü staging ortamına kurun.
- Magento yapılandırmasını OpenSearch’e geçirin
- Tam bir yeniden dizinleme çalıştırın
- Test arama, katmanlı navigasyon ve sıralama
Ayrıca OpenSearch uyumluluğu için Elasticsearch ile doğrudan iletişim kuran uzantıları (gelişmiş arama modülleri) kontrol edin.
Sorunları önleyin
- Küme sağlığını, disk kullanımını ve yığın belleği izleyin
- Arama motoruna özel bellek verin
- Disk kullanımını su işaretlerinin oldukça altında tutun.
- Logları döndürün
- İthalatlardan sonra düzenli yeniden dizin kontrolü yapın
Sıkça sorulan sorular
Magento 2.4, OpenSearch veya Elasticsearch olmadan çalışabilir mi?
Magento 2.4, desteklenen bir arama motoru gerektirir. MySQL araması 2.4’te kaldırıldı.
Arama motoru Magento ile aynı sunucuda mı çalışmalıdır?
Küçük mağazalar için olabilir. Daha büyük mağazalar için ayrı bir sunucu veya yönetilen hizmet, bellek rekabetini önler ve istikrarı artırır.
Neden yeniden dizinleme sonrası katmanlı navigasyon boş?
Genellikle yeniden dizinleme yarıda kaldığı veya arama motoruna erişilemediği için. Logları kontrol edin ve yeniden dizinleme yapın.
Magento aramasıyla ilgili yardıma mı ihtiyacınız var?
OpenSearch ve Elasticsearch sorunlarını gideriyorum, arama performansını ayarlıyorum ve Magento güncellemelerini yönetiyorum. Benim Magento 2 ve Hyvä hizmetim veya destek talep et kısmına bakın.