Sites e aplicações
Instalar e atualizar o Magento 2.4 sem Elasticsearch nem OpenSearch
Desde a versão 2.4, o Magento eliminou a pesquisa por MySQL que as versões anteriores usavam e exige um motor de pesquisa externo: Elasticsearch ou OpenSearch, consoante a versão (as mais recentes usam o OpenSearch). Pode ver qual pede a sua na tabela de requisitos do Adobe Commerce.
Estes motores são serviços que ficam em execução em segundo plano e precisam de vários GB de memória, pelo que não podem ser instalados num alojamento partilhado como o nosso. Tem dois caminhos:
- Contratar um serviço gerido de OpenSearch ou Elasticsearch, como o Elastic Cloud ou o Bonsai, e configurar os seus dados de ligação no Magento. É o que a Adobe recomenda, mas implica um custo mensal que, em lojas pequenas ou médias, pode não compensar.
- Desativar os módulos de Elasticsearch/OpenSearch e usar o MySQL como motor de pesquisa com um módulo gratuito. É o que este guia explica.
Ver que módulos de pesquisa tem a sua versão
Os nomes dos módulos mudam consoante a versão do Magento. Por exemplo, na 2.4.0–2.4.5 existem Magento_Elasticsearch6 e Magento_Elasticsearch7, e nas versões recentes Magento_Elasticsearch8 e Magento_OpenSearch. Para ver os da sua instalação, entre por SSH na pasta do Magento e execute:
php bin/magento module:status | grep -E 'Elasticsearch|OpenSearch'
Use esses nomes nos comandos abaixo.
Instalar o Magento 2.4 sem Elasticsearch
Se instalar o Magento manualmente, indique no setup:install que não ative os módulos do motor de pesquisa com --disable-modules. Numa versão recente:
php bin/magento setup:install \
--disable-modules=Magento_InventoryElasticsearch,Magento_Elasticsearch8,Magento_OpenSearch,Magento_Elasticsearch \
...resto de parámetros de instalación...
No Magento 2.4.0–2.4.5, a lista é Magento_InventoryElasticsearch,Magento_Elasticsearch7,Magento_Elasticsearch6,Magento_Elasticsearch.
Atualizar para o Magento 2.4 sem Elasticsearch
Se atualizar uma loja que não tem motor de pesquisa configurado, o setup:upgrade vai parar com um erro de ligação ao Elasticsearch ou ao OpenSearch. Desative antes os módulos que o module:status lhe mostrou:
php bin/magento module:disable Magento_Elasticsearch \ Magento_Elasticsearch8 \ Magento_OpenSearch \ Magento_InventoryElasticsearch
No Adobe Commerce (a versão paga), acrescente também Magento_ElasticsearchCatalogPermissions. Depois continue a atualização normalmente.
Usar o MySQL como motor de pesquisa: Legacy MySQL Search
Depois de desativar os módulos, a loja funciona mas não tem pesquisa. Para a recuperar, vamos usar o Legacy MySQL Search da Swissup: um módulo gratuito que recupera no Magento 2.4 a pesquisa por MySQL da 2.3 e que continua a ser mantido (versão 1.1.14).
A partir da pasta do Magento:
composer config repositories.swissup composer https://docs.swissuplabs.com/packages/ composer require swissup/module-search-mysql-legacy --prefer-source --ignore-platform-reqs php bin/magento module:enable Swissup_SearchMysqlLegacy Swissup_Core php bin/magento setup:upgrade --safe-mode=1 php bin/magento setup:di:compile php bin/magento config:set catalog/search/engine 'lmysql' php bin/magento indexer:reindex catalogsearch_fulltext
Estes comandos instalam o módulo, ativam-no, escolhem o MySQL como motor de pesquisa e voltam a indexar o catálogo. Se a loja estiver em modo de produção, execute depois php bin/magento setup:static-content:deploy es_ES e php bin/magento cache:flush.
Também pode escolher o motor a partir da administração, em Stores > Configuration > Catalog > Catalog > Catalog Search > Search Engine: desmarque Use system value e selecione Legacy MySQL (Deprecated).

Para verificar o motor ativo:
php bin/magento config:show catalog/search/engine
Deve responder lmysql. Faça uma pesquisa na loja para confirmar que devolve produtos.
Por predefinição, uma pesquisa de várias palavras («mala vermelha») devolve os produtos que contêm qualquer uma delas. Para que apareçam apenas os que têm todas, como com o Elasticsearch, altere Multi-word Search Logic (MySQL Legacy) para AND na mesma secção de Catalog Search e execute php bin/magento cache:clean config.
Outra alternativa: Algolia
O Algolia é um motor de pesquisa externo como serviço, com plano gratuito para catálogos e volumes de pesquisa pequenos. Tem uma extensão oficial para o Magento 2; também exige desativar os módulos de Elasticsearch/OpenSearch, como se explica acima, se não tiver um configurado.
Erros frequentes
- Falta de memória ao executar o Composer ou o
bin/magento(«Allowed memory size exhausted»): execute o comando comphp -d memory_limit=-1, por exemplophp -d memory_limit=-1 bin/magento setup:di:compile, ou aumente o memory_limit no cPanel. - O
setup:upgradefalha com «Current version of RDBMS is not supported»: não tem a ver com o motor de pesquisa. O Magento verifica a versão da base de dados e só aceita algumas; por exemplo, o Magento 2.4.8 suporta o MySQL 8.0 e 8.4, e o MariaDB até à 10.6 e à 11.4. Escreva-nos e indicamos-lhe que versão tem o seu servidor.
Também lhe pode ser útil
- Configurar o Magento 1.9 e anteriores para o envio de e-mails por SMTP Faça com que o Magento 1.x (e o OpenMage) envie os e-mails por SMTP autenticado em vez da mail() do...
- Alterar o estado de uma encomenda consoante o método de pagamento no PrestaShop Altere o estado que o PrestaShop atribui a uma encomenda ao confirmá-la com pagamento contra reembol...
- Mostrar a imagem e o preço nas pesquisas instantâneas do PrestaShop 1.6, 1.7, 8 e 9 Código para que a pesquisa instantânea (AJAX) do PrestaShop mostre a imagem e o preço de cada produt...
- Mudar para espanhol o idioma da loja e da administração do PrestaShop Coloque o PrestaShop em espanhol: importe o pacote de localização de Espanha, escolha o espanhol com...
Algo não bate certo ou mudou? Diga-nos e revemos.