Magento 2

Could not ping search engine no Magento 2: OpenSearch fora do ar

Categoria abrindo vazia, busca sem resultado nenhum e o painel do Magento 2.4.8 avisando Could not ping search engine. Please check the connection and try again. Antes de sair mexendo em configuração, pergunte direto ao motor de busca se ele está vivo:

curl -s http://localhost:9200
curl -s "http://localhost:9200/_cluster/health?pretty"
sudo systemctl status opensearch --no-pager

Se não voltar nada, o serviço caiu ou está escutando em outra interface, e o resto do post não importa: suba o OpenSearch primeiro. Com o plugin de segurança ligado o teste é curl -k -u usuario:senha https://localhost:9200, senão você lê recusa de conexão e culpa o serviço errado. Voltando o JSON com nome do cluster e versão, o motor está de pé e o problema é o que o Magento tem gravado pra falar com ele.

O bloco fica no app/etc/env.php

Procure o caminho system, default, catalog, search. O prefixo das chaves acompanha o motor escolhido:

'catalog' => [
    'search' => [
        'engine' => 'opensearch',
        'opensearch_server_hostname' => 'localhost',
        'opensearch_server_port' => '9200',
        'opensearch_index_prefix' => 'magento2',
        'opensearch_server_timeout' => '15',
    ],
],

Quem migrou de Elasticsearch 7 pra OpenSearch quase sempre esquece o campo engine. Com elasticsearch7 gravado ali, o Magento lê só as chaves de prefixo elasticsearch7 e ignora tudo que você escreveu com prefixo opensearch, apontando pra um servidor que já não existe. No 2.4.8 isso estoura sozinho depois do upgrade, porque o Elasticsearch 7 saiu da lista de motores suportados. E com o valor travado em arquivo, mexer no painel não muda nada.

Acertou o host, agora reindexe

bin/magento config:show catalog/search
bin/magento cache:clean config
bin/magento indexer:reset catalogsearch_fulltext
bin/magento indexer:reindex catalogsearch_fulltext

Enquanto o índice não termina, a vitrine segue vazia mesmo com o ping respondendo, então espere o comando voltar antes de comemorar.

Se travou nisso e precisa de ajuda, me chama aqui.

Post Recentes

DateTimeImmutable modify: por que a data não muda no PHP 8.3

Trocou DateTime por DateTimeImmutable e a data parou de andar? O modify devolve uma cópia nova em vez de alterar…

12 horas atrás

Defer nos scripts do WordPress 6.9 sem plugin, com wp_enqueue_script

Use o parâmetro strategy do wp_enqueue_script para adiar o JavaScript do tema, sem plugin de otimização, e entenda por que…

2 dias atrás

Banner de cookie que bloqueia de verdade: script só carrega depois do aceite

O banner aparece, o visitante não clica em nada e o Analytics já gravou cookie. Veja como segurar o script…

2 dias atrás

Revisar git diff com IA antes do commit: script que lê só o staged

Var_dump esquecido e senha de teste passam batido no commit. Um script PHP que lê o git diff --staged e…

3 dias atrás

Cannot query field no GraphQL do Magento 2: o campo existe e some

O campo está no schema.graphqls e a API insiste em Cannot query field. Limpe o cache certo, recompile o generated…

4 dias atrás

Block pattern não aparece no inseridor: registre pelo arquivo em /patterns

Padrão registrado no functions.php que não aparece na aba Padrões. O caminho curto do WordPress 6.9: um arquivo PHP na…

4 dias atrás