Da Elasticsearch a OpenSearch: cosa cambia e come migrare in sicurezza nel tuo sito Drupal

on

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.

AreaElasticsearchOpenSearch
LicenzaElastic License (non open-source)Apache 2.0 (open-source)
Compatibilitàfino alla 7.10 interoperabilefork della 7.10, API equivalenti
SicurezzaX-Pack (commerciale)Security plugin open-source
Gestione indiciILM (Index Lifecycle Management)ISM (Index State Management)
Feature aggiuntiveMachine Learning, Watcher, CanvasAlerting, Anomaly Detection, SQL, kNN
EcosistemaElastic Stack (ELK)OpenSearch Dashboards
Communitygestita da Elasticcommunity-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.

Perché passare a OpenSearch

1. Licenza open-source

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.

2. Compatibilità nativa con Drupal

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.

3. Sicurezza integrata

OpenSearch include nativamente TLS, autenticazione HTTP Basic, API Key, ruoli e permessi granulari (RBAC), oltre ad audit logging e supporto per CA interne.

4. Continuità tecnologica

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.

5. Ecosistema in crescita

La community OpenSearch evolve rapidamente: alerting, SQL, kNN, anomaly detection e osservabilità sono oggi parte integrante del core.

Come passare a OpenSearch in Drupal

Il passaggio è più semplice di quanto sembri.
Ecco una procedura standard, indipendente dal contesto specifico.

1. Verifica la compatibilità del tuo stack

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.

2. Sostituisci il backend Elasticsearch con OpenSearch

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.

  • URL: https://opensearch.tuodominio.it:9200
  • Autenticazione: Basic auth o API key
  • Verifica TLS: se usi una CA interna, installala sul server Drupal o usa un reverse proxy con certificato trusted.

3. Definisci un pattern dedicato per gli indici Drupal

Per 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 sezione analysis.

4. Ricostruisci gli indici

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.

5. Verifica le pipeline e le policy di lifecycle

  • Se non usavi ingest pipeline, non devi configurare nulla.
  • Se in Elasticsearch avevi ILM (Index Lifecycle Management), in OpenSearch troverai l’equivalente ISM (Index State Management).
    Le policy vanno ricreate, ma la logica di rollover e retention resta la stessa.

Risultato finale

Dopo la migrazione:

  • Drupal continua a usare Search API, Views e Facets esattamente come prima.
  • Tutte le query funzionano grazie alla compatibilità delle API.
  • OpenSearch fornisce HTTPS, sicurezza integrata e licenza libera.
  • L’indicizzazione è spesso più veloce grazie al miglioramento del cluster OS 2.x.

💡 Bonus tip: OpenSearch in locale con DDEV

Se utilizzi DDEV per lo sviluppo in locale, aggiorna anche il servizio di ricerca passando dall’addon Elasticsearch a quello OpenSearch.

  • Rimuovi l’addon Elasticsearch
    ddev delete addon ddev/ddev-elasticsearch
    ddev restart
  • Installa l’addon OpenSearch
    ddev get ddev/ddev-opensearch
    ddev restart

URL 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.

Conclusione

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.

Related Posts:

Rispondi

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.