Come configurare la ricerca full-text in Nextcloud utilizzando Elasticsearch 8

L'integrazione di Nextcloud con Elasticsearch è ancora attiva nel 2026, ma c'è un dettaglio di compatibilità che vale la pena verificare prima di iniziare: l'attuale app "Full text search - Elasticsearch Platform" supporta Elasticsearch 8, non Elasticsearch 9. Il repository ufficiale del progetto afferma che le versioni 26.0.0 e successive sono compatibili solo con Elasticsearch 8. Inoltre, Nextcloud 35 ora ha una versione corrispondente della piattaforma Elasticsearch 35.0.0, pubblicata il 18 settembre 2026. Se stai aggiornando un server esistente, verifica la versione dell'app che corrisponde alla tua versione principale di Nextcloud prima di modificare l'indice di ricerca.

Questa guida mostra una configurazione pratica per l'indicizzazione del contenuto dei file in Nextcloud con Elasticsearch 8. Si concentra sulla classica architettura a tre applicazioni: il framework di ricerca full-text, il connettore della piattaforma Elasticsearch e il provider File. I comandi utilizzano la occCLI di Nextcloud perché è più facile da validare e automatizzare rispetto all'utilizzo esclusivo dell'interfaccia web.

Riferimenti ufficiali: App Nextcloud Full text search - Elasticsearch Platform , repository della piattaforma Nextcloud Elasticsearch , framework di ricerca full text di Nextcloud , provider di ricerca full text di Nextcloud Files e guida all'installazione Docker a nodo singolo di Elastic .

Cosa contiene effettivamente lo stack di ricerca full-text di Nextcloud

La ricerca full-text di Nextcloud non è una singola app. L'app principale di ricerca full-text fornisce la struttura di base. Un'app di piattaforma collega tale struttura a un motore di ricerca e una o più app provider estraggono il contenuto ricercabile. Per i contenuti dei file, il provider è Ricerca full-text - File. Elasticsearch memorizza l'indice risultante e risponde alle query.

  • Ricerca full-text: il framework principale e il livello di orchestrazione della ricerca.
  • Ricerca full-text - Elasticsearch Platform: il connettore che invia documenti e query a Elasticsearch.
  • Ricerca full-text - File: il fornitore che espone i file degli utenti al framework per l'indicizzazione.
  • Elasticsearch 8: il motore di ricerca esterno che memorizza l'indice.

La separazione è importante durante la risoluzione dei problemi. Un endpoint HTTP di Elasticsearch funzionante non dimostra che Nextcloud sia in grado di estrarre il contenuto dei file, e un provider File abilitato non dimostra che il connettore della piattaforma possa raggiungere Elasticsearch. Il comando integrato fulltextsearch:testè utile perché controlla la catena configurata anziché un singolo componente.

Prima di iniziare

È necessario disporre dei diritti di amministratore su Nextcloud, dell'accesso alla shell del server o del container che esegue Nextcloud e di un'istanza di Elasticsearch 8 raggiungibile da tale ambiente. Gli esempi seguenti presuppongono un server Linux e utilizzano Docker per Elasticsearch perché mantiene il servizio di ricerca isolato. Se si utilizza già un cluster Elasticsearch 8 gestito o dedicato, è possibile utilizzare il relativo endpoint HTTPS esistente.

In ambiente di produzione, non esporre la porta 9200 direttamente a Internet. La documentazione Docker di Elastic raccomanda di associare la porta HTTP a un'interfaccia controllata e di mantenere le funzionalità di sicurezza. Elastic documenta anche i requisiti dell'host per vm.max_map_countle implementazioni Docker in produzione. Qualsiasi comando a nodo singolo con funzionalità di sicurezza disabilitate deve essere considerato come una scorciatoia per un ambiente di test locale, non come un modello di produzione.

Passaggio 1: Installa le tre app Nextcloud necessarie

Dalla pagina App di Nextcloud, installa e abilita Ricerca full-text , Ricerca full-text - Piattaforma Elasticsearch e Ricerca full-text - File . Puoi anche installarli con occ, operazione spesso più semplice sui server headless:

sudo -u www-data php /var/www/nextcloud/occ app:install fulltextsearch
sudo -u www-data php /var/www/nextcloud/occ app:install fulltextsearch_elasticsearch
sudo -u www-data php /var/www/nextcloud/occ app:install files_fulltextsearch

Se i tuoi file Nextcloud si trovano in un'altra posizione, modifica il percorso in occ. Nell'immagine Docker ufficiale di Nextcloud, il percorso è solitamente /var/www/html/occ. Dopo l'installazione, usa occ app:listper verificare che tutte e tre le app appaiano in Abilitate.

Pagina delle app di Nextcloud che mostra la ricerca full-text, la ricerca full-text - piattaforma Elasticsearch e la ricerca full-text - file abilitate.

Didascalia: La pagina delle app di Nextcloud con il framework principale per la ricerca full-text, il connettore della piattaforma Elasticsearch e il provider di file abilitati.

Passaggio 2: Avvia Elasticsearch 8 e verifica che Nextcloud possa raggiungerlo

Il connettore Elasticsearch richiede Elasticsearch 8 a partire dalla versione 26.0.0 dell'app Nextcloud. Non utilizzare Elasticsearch 9 a meno che la dichiarazione ufficiale di compatibilità non cambi per la versione dell'app in uso.

Per un ambiente di laboratorio locale, Elastic documenta un approccio Docker a nodo singolo. È possibile avviare un'istanza di test minima su un'interfaccia privata. In un ambiente di produzione, è consigliabile mantenere l'autenticazione e il TLS abilitati e seguire le attuali linee guida di installazione di Elastic, anziché disabilitare la sicurezza.

docker run --name es01   --net elastic   -p 127.0.0.1:9200:9200   -it -m 6GB   docker.elastic.co/elasticsearch/elasticsearch:<ELASTICSEARCH_8_VERSION>

L'avvio predefinito sicuro di Elastic visualizza la password per l'utente predefinito elastice crea certificati HTTP TLS. È quindi possibile verificare il nodo utilizzando il certificato CA e le credenziali come descritto nella guida ufficiale. Se Nextcloud si trova in un altro container Docker, ricorda che 127.0.0.1punta al container Nextcloud stesso, non al container Elasticsearch. Posiziona entrambi i servizi su una rete Docker condivisa e utilizza il nome del servizio Elasticsearch, ad esempio https://elasticsearch:9200, oppure instrada tramite un indirizzo privato.

Terminale Linux che mostra un container Elasticsearch a nodo singolo in fase di avvio e in ascolto sulla porta 9200.

Didascalia: Vista del terminale di un servizio Elasticsearch a nodo singolo in fase di avvio e verifica; per l'ambiente di produzione, si consiglia di mantenere l'autenticazione e il TLS abilitati anziché utilizzare una configurazione di laboratorio non protetta.

Passaggio 3: Configurare Nextcloud per utilizzare Elasticsearch

È possibile configurare la piattaforma nell'interfaccia di amministrazione, ma la modalità CLI è precisa e riproducibile. L'integrazione All-in-One di Nextcloud configura il framework selezionando la classe della piattaforma Elasticsearch e quindi passando l'host e il nome dell'indice di Elasticsearch al connettore.

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch_elasticsearch:configure '{"elastic_host":"https://elastic:YOUR_PASSWORD@elasticsearch:9200","elastic_index":"nextcloud_index"}'

Utilizza un URL host raggiungibile dal processo PHP di Nextcloud. Se il tuo endpoint Elasticsearch utilizza un'autorità di certificazione (CA) privata, assicurati che l'ambiente Nextcloud si fidi di tale CA anziché disattivare la verifica del certificato. Evita di inserire le credenziali nella cronologia della shell sui sistemi condivisi; utilizza un metodo di configurazione protetto appropriato alla tua implementazione.

Il nome dell'indice deve essere in minuscolo e dedicato a questa istanza di Nextcloud. Un nome come nextcloud_indexè facile da identificare. Se più istanze di Nextcloud condividono un cluster Elasticsearch, assegnare a ciascuna istanza un nome di indice univoco.

Schermata di amministrazione della ricerca full-text di Nextcloud con Elasticsearch selezionato, un indirizzo Elasticsearch e il nome dell'indice nextcloud_index

Didascalia: La schermata di amministrazione della ricerca full-text con Elasticsearch selezionato come piattaforma di ricerca e un nome di indice dedicato configurato.

Passaggio 4: Scegliere quale contenuto del file deve essere indicizzato

Il provider File controlla quali categorie di contenuto dei file vengono inviate per l'indicizzazione. L'inizializzazione All-in-One di Nextcloud attualmente consente l'estrazione di PDF e documenti Office con questo comando:

sudo -u www-data php /var/www/nextcloud/occ files_fulltextsearch:configure '{"files_pdf":true,"files_office":true}'

Le opzioni del provider disponibili possono variare a seconda della versione dell'app, quindi controlla la configurazione corrente prima di copiare le impostazioni da un tutorial precedente. Ricorda inoltre che la qualità dell'estrazione del testo dipende dal file sorgente. Un normale PDF con testo incorporato è molto più facile da indicizzare rispetto a un PDF scansionato contenente solo immagini. La ricerca full-text non rende automaticamente accurato un OCR di scarsa qualità.

Passaggio 5: Testare la configurazione di ricerca completa

Prima di indicizzare una libreria di grandi dimensioni, esegui il test del framework:

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:test

Un test riuscito dovrebbe dimostrare che la piattaforma è raggiungibile e che la combinazione provider/piattaforma configurata può funzionare. In caso di errore, correggere la connessione prima di avviare l'indicizzazione iniziale. Le cause tipiche includono l'utilizzo localhostdi un container errato, problemi di attendibilità del certificato, errori di autenticazione, una versione principale di Elasticsearch incompatibile o una configurazione dell'indice che Elasticsearch rifiuta.

Passaggio 6: Creare l'indice iniziale

Una volta superato il test, crea l'indice iniziale:

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:index

Su un server di grandi dimensioni, questa operazione può richiedere tempo e consumare CPU, memoria, I/O di archiviazione e heap di Elasticsearch. Eseguite la prima scansione durante una finestra di traffico ridotto e monitorate i log di Nextcloud e di Elasticsearch. Il framework supporta anche un modulo di ripristino degli errori utilizzato da Nextcloud All-in-One durante la configurazione iniziale:

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:index '{"errors":"reset"}' --no-readline

Non reimpostare e ricostruire ripetutamente un indice funzionante senza un valido motivo. Per gli aggiornamenti, leggi prima le note di rilascio delle tre app di ricerca e verifica se è effettivamente necessaria una reindicizzazione.

Passaggio 7: Mantenere aggiornato l'indice

Un indice iniziale è solo un'istantanea. I nuovi caricamenti e le modifiche richiedono un'indicizzazione continua. Il framework di ricerca full-text include un fulltextsearch:livecomando per l'elaborazione continua. Se lo si utilizza, è consigliabile eseguirlo tramite un supervisore di processi o un altro gestore di servizi, in modo che venga riavviato dopo eventuali errori o riavvii del sistema host.

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:live

Non avviare un processo in primo piano non gestito in una sessione SSH e non presumere che l'indicizzazione continui dopo il logout. Le implementazioni in container possono eseguire il worker live come processo dedicato e supervisionato; i server tradizionali possono utilizzare systemd o un supervisore. Monitoralo come qualsiasi altro servizio in background.

Passaggio 8: Verificare la ricerca sia dalla CLI che dall'interfaccia di Nextcloud

Dopo la scansione iniziale, cerca una frase che compare all'interno di un documento noto, anziché solo nel nome del file. Questo conferma che l'estrazione e l'indicizzazione dei contenuti funzionano correttamente. Le versioni recenti della ricerca full-text supportano anche la ricerca tramite occ, utile per distinguere un problema di indicizzazione del backend da un problema del browser o della ricerca unificata.

Nell'interfaccia web, utilizza il campo di ricerca di Nextcloud e cerca una frase distintiva in un file PDF, DOCX o di testo che sai essere stato indicizzato. Se le ricerche per nome file funzionano ma le ricerche nel corpo del documento non funzionano, controlla le impostazioni del provider di file e il tipo di documento di origine.

Il terminale mostra i comandi di test e indicizzazione della ricerca full-text eseguiti correttamente, sopra un pannello di ricerca di Nextcloud che restituisce i documenti corrispondenti.

Didascalia: Test del framework e indicizzazione iniziale andati a buon fine, seguiti da una ricerca su Nextcloud che restituisce i documenti indicizzati.

Risoluzione dei problemi più comuni

Elasticsearch funziona con curl, ma Nextcloud non riesce a connettersi

Eseguire il test dallo stesso namespace di rete del processo PHP di Nextcloud. In Docker, una richiesta andata a buon fine dall'host non dimostra che il container di Nextcloud sia in grado di risolvere o raggiungere il servizio Elasticsearch. Verificare DNS, reti del container, regole del firewall, attendibilità TLS e lo schema esatto nell'URL configurato.

Il connettore segnala un problema di versione di Elasticsearch.

Verifica la versione principale effettiva di Elasticsearch, non solo il tag dell'immagine che intendi distribuire. Il repository ufficiale del connettore indica ancora la compatibilità con Elasticsearch 8 per la versione dell'app 26.0.0 e successive. Al momento della stesura di questo documento, esiste una richiesta aperta a monte per il supporto di Elasticsearch 9, quindi non si deve dare per scontata la compatibilità con Elasticsearch 9.

L'indicizzazione utilizza troppa memoria

Monitora contemporaneamente l'heap di Elasticsearch, i limiti di memoria del container e la memoria dell'host. La documentazione di Elastic per la produzione con Docker menziona anche impostazioni a livello di host come vm.max_map_count. Se la JVM viene terminata, aumentare solo il limite di memoria PHP di Nextcloud non risolverà il problema lato Elasticsearch.

Mancano alcuni file condivisi o esterni

Il comportamento di ricerca può dipendere dal supporto del provider e dalla versione dell'app. Il progetto del provider File continua a monitorare i problemi relativi a cartelle condivise, cartelle di gruppo e archiviazione esterna. Se un tipo di archiviazione si comporta in modo diverso dai normali file locali, riproduci il problema con un piccolo esempio controllato e consulta il sistema di tracciamento dei problemi ufficiale del provider prima di ricostruire l'intero indice.

Come capire se la configurazione è completa

Un'implementazione corretta presenta quattro segnali osservabili: Elasticsearch 8 è raggiungibile da Nextcloud, fulltextsearch:testi test vengono superati, l'inizializzazione fulltextsearch:indexsi completa senza errori irrisolti e la ricerca di testo all'interno di un documento noto restituisce il file corrispondente per un utente autorizzato. Mantieni privato l'endpoint dell'indice, preserva la sicurezza di Elasticsearch in produzione e aggiorna le tre app di ricerca di Nextcloud in base alla versione principale di Nextcloud in uso.

Per informazioni specifiche relative alla versione, consultare l' elenco ufficiale delle release della piattaforma Nextcloud Elasticsearch e le linee guida ufficiali per Docker in ambiente di produzione di Elastic . Queste fonti rappresentano la documentazione più affidabile per verificare la compatibilità e i requisiti dell'host prima di un aggiornamento importante.

Lascia un commento

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Scopri cosa fa Microsoft IIS, come funzionano la sua pipeline di richieste e i pool di applicazioni e quando Apache, NGINX o Caddy potrebbero essere più adatti alle tue esigenze di server web.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Diagnostica i picchi di utilizzo della CPU del browser Jitsi Meet e riduci il carico del client controllando i riquadri video, gli effetti della fotocamera, la grafica del browser e le impostazioni dell'host.

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Monitora lo stato di salute, il carico della conferenza e il traffico di Jitsi Videobridge con il suo endpoint Prometheus integrato, quindi esplora e visualizza i dati in Grafana.

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Configura un dominio personalizzato per Jitsi Meet Docker con DNS, URL pubblico, HTTPS, Let's Encrypt, porte del firewall, impostazioni NAT e verifica end-to-end.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Scopri come diagnosticare e risolvere l'avviso di configurazione di PHP OPcache di Nextcloud controllando l'SAPI PHP attivo, i limiti di dimensionamento, i commenti e le impostazioni di riconvalida.

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere i problemi di migrazione del database Kopano dopo un aggiornamento di MySQL o MariaDB verificando i backup, le versioni del server, le modalità SQL, il set di caratteri, lo stato dello schema e i log.

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Collega Nextcloud a LDAP o Active Directory con trasporto sicuro, filtri per utenti e gruppi, attributi di accesso e un'implementazione collaudata.

Risolvere i problemi relativi alle notifiche di Element su Android senza i servizi Google: Guida a UnifiedPush

Risolvere i problemi relativi alle notifiche di Element su Android senza i servizi Google: Guida a UnifiedPush

Risolvi i problemi di notifiche di Element Android sui telefoni senza Google configurando UnifiedPush, le autorizzazioni Android, le impostazioni della batteria ed eseguendo test di verifica affidabili.

Risolvi l'avviso di Nextcloud "Database con alcuni indici mancanti"

Risolvi l'avviso di Nextcloud "Database con alcuni indici mancanti"

Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti utilizzando il comando ufficiale occ. Prima di procedere, esegui un backup, visualizza in anteprima le modifiche, avvia la riparazione e verifica il risultato.