Introducción al problema de Elasticsearch en Magento 2
Magento 2 requiere de forma obligatoria un motor de búsqueda externo compatible para gestionar el catálogo de productos. Elasticsearch u OpenSearch son las opciones estándar recomendadas. Cuando se produce un fallo de comunicación, la tienda puede dejar de mostrar productos, generar errores HTTP 500 en la búsqueda o bloquear los procesos de reindexación en la terminal.
Causas comunes del error de conexión
- El servicio de Elasticsearch no está activo o se ha caído por falta de memoria RAM en el servidor VPS o dedicado.
- Configuración incorrecta de los parámetros de host o puerto en la base de datos de Magento.
- Bloqueo de puertos (puerto predeterminado 9200) en las reglas del cortafuegos del servidor.
- Incompatibilidad de la versión instalada de Elasticsearch con la versión específica de Magento de tu tienda.
Método 1: Verificar e iniciar el servicio de Elasticsearch en el servidor
El primer paso es comprobar si el servicio de Elasticsearch se está ejecutando correctamente en tu sistema operativo. Accede a tu servidor mediante SSH y ejecuta el siguiente comando según tu distribución Linux:
sudo systemctl status elasticsearchSi el servicio aparece como inactivo o detenido, puedes iniciarlo y habilitarlo para que arranque automáticamente con el sistema utilizando los siguientes comandos:
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearchMétodo 2: Comprobar la respuesta del puerto local
Una vez que te asegures de que el daemon está corriendo, debes comprobar que el puerto 9200 responde a solicitudes locales HTTP enviando una petición de prueba básica:
curl -XGET 'http://localhost:9200'Si el servicio responde correctamente, verás una respuesta en formato JSON con información detallada de la versión instalada de Elasticsearch. Si obtienes un mensaje de conexión rechazada, revisa el archivo de configuración localizado en /etc/elasticsearch/elasticsearch.yml para verificar que el servicio está escuchando en la dirección IP correcta.
Método 3: Configurar Elasticsearch mediante la CLI de Magento
Si Elasticsearch funciona pero Magento sigue sin conectarse, puedes reconfigurar las credenciales y el motor de búsqueda de Magento utilizando la interfaz de línea de comandos integrada. Ejecuta los siguientes comandos desde el directorio raíz de tu instalación:
bin/magento config:set catalog/search/engine 'elasticsearch7'
bin/magento config:set catalog/search/elasticsearch7_server_hostname 'localhost'
bin/magento config:set catalog/search/elasticsearch7_server_port '9200'Después de realizar esta configuración, es obligatorio limpiar la memoria caché de la tienda y proceder a una reindexación completa del catálogo para aplicar los cambios:
bin/magento cache:flush
bin/magento indexer:reindex