Ricerca veloce per cataloghi grandi: come collegare Elasticsearch o OpenSearch a Shopware 6, dall’installazione alla configurazione fino a indicizzazione, test e gestione. Una guida per i negozi online in Italia.
Velocità di ricerca e qualità dei risultati decidono, nell’e-commerce, la soddisfazione dei clienti e la conversione, anche per i negozi online in Italia. Shopware 6 offre a questo scopo un collegamento a Elasticsearch e OpenSearch: motori di ricerca distribuiti che scansionano grandi cataloghi in millisecondi, calcolano filtri e faccette e forniscono suggerimenti durante la digitazione.
La ricerca standard di Shopware lavora sul database MySQL. È sufficiente per cataloghi piccoli, ma con decine di migliaia di articoli, molte proprietà e traffico elevato diventa lenta. A quel punto Elasticsearch o OpenSearch si occupano di ricerca prodotti, listing e filtri nello storefront e nella Store API.
Questo articolo descrive requisiti, installazione, configurazione, indicizzazione, test e gestione. Le basi della piattaforma sono nella nostra pagina sullo sviluppo Shopware.
Elasticsearch è un motore di ricerca e analisi distribuito basato sulla libreria Lucene. Indicizza documenti, risponde a query full-text e strutturate con bassa latenza e scala su più nodi. È sviluppato da Elastic.
Dopo il cambio di licenza di Elastic nel 2021, Amazon Web Services ha pubblicato OpenSearch, un fork di Elasticsearch e Kibana. OpenSearch è rilasciato con licenza Apache 2.0, viene sviluppato da una community e resta compatibile nelle API principali. Shopware supporta entrambi i sistemi e per le nuove installazioni consiglia OpenSearch.
Quando il collegamento è attivo, ricerca prodotti, listing delle categorie e filtri passano dall’indice di ricerca invece che da SQL. L’amministrazione può usare inoltre una propria ricerca admin basata sul motore. Quale strada convenga dipende da catalogo, traffico e hosting; la nostra panoramica sullo Shopware Hosting aiuta a orientarsi.
# Scaricare il pacchetto (adattare la versione)
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.19.0/opensearch-2.19.0-linux-x64.deb
# Installare, da OpenSearch 2.12 con password admin
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=LaSuaPasswordSicura dpkg -i opensearch-2.19.0-linux-x64.deb
# Avviare il servizio e attivarlo all'avvio
sudo systemctl enable --now opensearch
# Verificare la raggiungibilità
curl -k -u admin:LaSuaPasswordSicura https://localhost:9200/
Per Elasticsearch l’installazione è analoga, con il pacchetto Elastic e il servizio elasticsearch. Negli ambienti di sviluppo un container Docker è la soluzione più rapida. In produzione conviene adattare nella configurazione la dimensione dell’heap (circa la metà della RAM disponibile, al massimo 31 GB), i percorsi di archiviazione e le credenziali.
Il collegamento non si gestisce dall’amministrazione, ma tramite variabili d’ambiente nel file .env o .env.local:
SHOPWARE_ES_ENABLED=1
SHOPWARE_ES_HOSTS=https://utente:password@localhost:9200
SHOPWARE_ES_INDEXING_ENABLED=1
SHOPWARE_ES_INDEX_PREFIX=sw
SHOPWARE_ES_THROW_EXCEPTION=0
Significato delle variabili: SHOPWARE_ES_ENABLED attiva la ricerca tramite il motore, SHOPWARE_ES_INDEXING_ENABLED consente la scrittura nell’indice, SHOPWARE_ES_INDEX_PREFIX separa più negozi sullo stesso cluster e SHOPWARE_ES_THROW_EXCEPTION decide se in caso di guasto compare un errore (1) o se Shopware torna silenziosamente alla ricerca su database (0).
bin/console cache:clear
bin/console es:index
bin/console es:create:alias
bin/console es:status
Alla prima esecuzione si consiglia questo ordine: attivare l’indicizzazione lasciando ancora disattivata la ricerca, costruire l’indice, poi impostare SHOPWARE_ES_ENABLED=1 e svuotare la cache. Così il negozio resta raggiungibile durante l’indicizzazione. L’indicizzazione passa dalla message queue, quindi il worker deve essere in esecuzione. Con bin/console dal:refresh:index avvia in seguito una reindicizzazione completa.
Con SHOPWARE_ADMIN_ES_ENABLED=1 e SHOPWARE_ADMIN_ES_INDEXING_ENABLED=1 anche la ricerca nell’amministrazione usa il motore. Il relativo indice si costruisce con bin/console es:admin:index.
curl -k -u utente:password https://localhost:9200/_cluster/health dovrebbe restituire green o yellow (con un solo nodo il giallo è normale).bin/console es:status mostra indici, alias e numero di documenti. Il numero di prodotti deve corrispondere al catalogo.var/log/prod.log) e del motore di ricerca.SHOPWARE_ES_HOSTS; con certificati autofirmati indicare la CA.bin/console es:reset si ricostruisce un indice danneggiato.es:status), svuotare la cache, controllare che SHOPWARE_ES_ENABLED sia davvero impostato su 1.Posso scambiare liberamente Elasticsearch e OpenSearch?
In linea di principio sì, Shopware li gestisce entrambi con la stessa configurazione. Verifichi però le versioni supportate nelle release notes della Sua versione di Shopware.
Il mio hosting provider non offre un motore di ricerca. Cosa faccio?
Utilizzi un servizio managed come Amazon OpenSearch Service o Elastic Cloud, oppure resti sulla ricerca su database finché il catalogo non lo richiede. Per i merchant in Italia conviene scegliere un data center nell’UE, per una gestione dei dati conforme al GDPR. Quali opzioni esistono lo mostra il nostro articolo sullo Shopware Hosting.
Ogni quanto devo reindicizzare?
Shopware aggiorna automaticamente l’indice tramite il worker quando ci sono modifiche. Una reindicizzazione completa ha senso dopo gli aggiornamenti di Shopware, modifiche alle proprietà o alla configurazione dell’indice.
Posso modificare la ponderazione dei risultati?
Sì. La ponderazione dei campi di ricerca si imposta nell’amministrazione alla voce Impostazioni → Ricerca, regole di boosting più avanzate si possono aggiungere con un plugin. Come nasce un plugin lo trova nella nostra pagina sullo sviluppo di plugin Shopware.
Vuole sapere se il passaggio conviene al Suo negozio in Italia? La nostra analisi del negozio verifica ricerca, performance e conversione.