Negli ultimi anni la ricerca full-text è diventata uno dei pilastri dell’esperienza utente in Drupal.
Moduli come Search API, Facets, Better Exposed Filters e Views Autocomplete Filters permettono di realizzare ricerche dinamiche, con filtri e suggerimenti, anche su database di grandi dimensioni.
Per anni, la tecnologia più usata come motore di ricerca esterno è stata Elasticsearch, grazie alle sue performance e alla piena integrazione con Search API.
Ma dopo il cambio di licenza da parte di Elastic Inc., la community open source ha trovato in OpenSearch l’alternativa più naturale.
| Area | Elasticsearch | OpenSearch |
|---|---|---|
| Licenza | Elastic License (non open-source) | Apache 2.0 (open-source) |
| Compatibilità | fino alla 7.10 interoperabile | fork della 7.10, API equivalenti |
| Sicurezza | X-Pack (commerciale) | Security plugin open-source |
| Gestione indici | ILM (Index Lifecycle Management) | ISM (Index State Management) |
| Feature aggiuntive | Machine Learning, Watcher, Canvas | Alerting, Anomaly Detection, SQL, kNN |
| Ecosistema | Elastic Stack (ELK) | OpenSearch Dashboards |
| Community | gestita da Elastic | community-driven, con forte supporto AWS |
In pratica, OpenSearch nasce da Elasticsearch 7.10, ne mantiene la compatibilità e ne amplia le funzionalità, ma con un approccio open e trasparente.
Per Drupal, questo significa continuità nelle API e piena interoperabilità con la logica di Search API.
OpenSearch è distribuito sotto licenza Apache 2.0, che consente l’uso e la modifica libera anche in contesti commerciali.
Non servono abbonamenti o licenze enterprise per attivare funzioni di sicurezza o gestione avanzata del cluster.
Il modulo search_api_opensearch fornisce un backend dedicato a OpenSearch, completamente compatibile con Search API, Facets, Better Exposed Filters e Views Autocomplete Filters.
Non è un fork improvvisato, ma un progetto stabile mantenuto in parallelo alla piattaforma OpenSearch.
OpenSearch include nativamente TLS, autenticazione HTTP Basic, API Key, ruoli e permessi granulari (RBAC), oltre ad audit logging e supporto per CA interne.
La sintassi delle query, il DSL, i mapping e gli analyzer sono equivalenti a quelli di Elasticsearch 7.x.
Le applicazioni Drupal che già funzionano con Elasticsearch possono passare a OpenSearch senza modificare il codice.
La community OpenSearch evolve rapidamente: alerting, SQL, kNN, anomaly detection e osservabilità sono oggi parte integrante del core.
Il passaggio è più semplice di quanto sembri.
Ecco una procedura standard, indipendente dal contesto specifico.
I moduli dell’ecosistem Search API sono tantissimi ma quelli che sono in relazione con la ricerca full-text sono in genere questi:
dependencies:
- search_api:search_api
- facets:facets
- better_exposed_filters:better_exposed_filters
- views_autocomplete_filters:views_autocomplete_filters
- snowball_stemmer:snowball_stemmer
Tutti questi moduli restano compatibili: operano sopra Search API, quindi il cambio di backend non li coinvolge.
Installa il nuovo modulo:
composer require drupal/search_api_opensearch:^2
composer remove drupal/elasticsearch_connector
Poi, in Configurazione → Search API → Server, crea un nuovo server con backend OpenSearch.
https://opensearch.tuodominio.it:9200Per evitare conflitti con altri template o indici di sistema, usa un pattern dedicato (drupal-*).
Puoi creare su OpenSearch un Index Template con analyzer e filtro linguistico personalizzati, ad esempio per l’italiano:
curl -u admin:password \
-H 'Content-Type: application/json' \
-X PUT 'https://opensearch.tuodominio.it:9200/_index_template/drupal-template' -d @- <<'JSON'
{
"index_patterns": ["drupal-*"],
"template": {
"settings": {
"index": {
"number_of_shards": 1,
"analysis": {
"analyzer": {
"it_text": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "asciifolding", "italian_stop", "italian_snowball"]
}
},
"filter": {
"italian_stop": { "type": "stop", "stopwords": "_italian_" },
"italian_snowball":{ "type": "snowball","language": "Italian" }
}
}
}
}
},
"priority": 100
}
JSON
Se preferisci gestire lo stemming in Drupal (tramite
snowball_stemmer), puoi omettere la sezioneanalysis.
Ricollega gli Index Search API al nuovo server OpenSearch e avvia la reindicizzazione.
Drupal ricreerà gli indici drupal-* da zero nel cluster OpenSearch, applicando il template appena definito.
Dopo la migrazione:
Se utilizzi DDEV per lo sviluppo in locale, aggiorna anche il servizio di ricerca passando dall’addon Elasticsearch a quello OpenSearch.
ddev delete addon ddev/ddev-elasticsearch
ddev restartddev get ddev/ddev-opensearch
ddev restartURL utili
Dove puntare Drupal: all’interno del container PHP l’endpoint tipico è http://opensearch:9200; dal browser, l’istanza è normalmente esposta su https://opensearch.ddev.site:9200.
OpenSearch non è più soltanto il “fork” di Elasticsearch: oggi è una piattaforma completa, libera e in costante evoluzione.
Per i progetti Drupal rappresenta una scelta sostenibile, a prova di futuro, per mantenere prestazioni e funzionalità di ricerca avanzate senza vincoli di licenza o costi enterprise.
Se stai pianificando la migrazione del tuo motore di ricerca in Drupal — o vuoi valutare una configurazione ibrida con OpenSearch — contattami.