Om in Nextcloud in de inhoud van bestanden te zoeken, installeer je het framework voor full-text zoeken, de bijbehorende Elasticsearch-platformapp en de Files-provider. Verbind vervolgens de apps met een compatibele Elasticsearch 8-server en bouw de index. Dit voegt doorzoekbare documenttekst toe, maar vereist ook een aparte service voor beveiliging, monitoring en onderhoud. In de README van de connector wordt Elasticsearch 8 als ondersteunde hoofdversie vermeld. Controleer daarom de compatibiliteit met de door jou geïnstalleerde app-versie voordat je een specifieke Elasticsearch-versie selecteert.
Kies de configuratie die bij uw server past.
Elasticsearch helpt gebruikers woorden in documenten te vinden, naast bestandsnamen en basismetadata. De keerzijde is een extra service die beveiligd en onderhouden moet worden, plus geheugen-, schijf- en CPU-gebruik tijdens het indexeren. Een kleine cloud rechtvaardigt deze extra kosten mogelijk niet; een team dat veel met documenten werkt, kan de kosten van content search echter wel de moeite waard vinden.
De integratie bestaat uit drie apps: Full Text Search coördineert de provider en het platform, Elasticsearch verbindt het framework met de zoekmachine en Files levert de bestandsinhoud. Er kan slechts één platformapp tegelijk worden geselecteerd. Zie de README van het framework en de README van de Files-provider .
Deze Linux-voorbeelden gebruiken Debian- of Ubuntu-paden en www-data-accounts. Pas de paden en servicegebruikers aan voor containers of andere distributies.
1. Controleer de compatibiliteit en bereid Elasticsearch voor.
Controleer je Nextcloud- en app-versies voordat je Elasticsearch installeert. In de README van de connector staat dat Elasticsearch 8 wordt ondersteund vanaf app-versie 26.0.0. Ga er niet vanuit dat Elasticsearch 9 compatibel is omdat het een nieuwere versie is; raadpleeg de README van de connector en de installatiewiki voor jouw specifieke versie.
Installeer Elasticsearch volgens de instructies van Elastic voor uw besturingssysteem en de compatibele hoofdversie. Het Debian-pakket van Elastic bevat een gebundelde OpenJDK, dus een aparte Java-installatie is normaal gesproken niet nodig voor dat pakket. Zie de documentatie voor pakketinstallatie van Elastic voor Debian . Zorg ervoor dat Elasticsearch alleen bereikbaar is vanaf de Nextcloud-host of een privé-applicatienetwerk, tenzij uw architectuur anders vereist. Elasticsearch 8 activeert beveiligingsfuncties tijdens de pakketinstallatie; behoud authenticatie en TLS voor netwerkimplementaties en stel nooit een niet-geauthenticeerd zoek-eindpunt bloot aan het openbare internet.
Zodra de service is gestart, test u het eindpunt lokaal met behulp van het schema en de referenties die tijdens de installatie zijn ingesteld. Voor een lokaal beveiligde instantie kan een verzoek er als volgt uitzien curl --cacert /path/to/http_ca.crt -u elastic https://localhost:9200: ; voer het wachtwoord in wanneer daarom wordt gevraagd in plaats van het in de shellgeschiedenis op te slaan. Gebruik het CA-certificaat dat voor uw installatie is gegenereerd, niet het placeholder-pad. Een succesvolle reactie moet het Elasticsearch-knooppunt en de versie identificeren. Als deze controle mislukt, corrigeert u de service, het certificaatvertrouwen of de referenties voordat u Nextcloud configureert.
2. Installeer de Nextcloud-zoekapps
Gebruik de pagina 'Apps' van Nextcloud om de volgende apps te installeren en in te schakelen: Volledige tekst zoeken , Volledige tekst zoeken - Elasticsearch Platform en Volledige tekst zoeken - Bestanden . Je kunt ook occde opdrachtregeltool van Nextcloud gebruiken vanuit de installatiemap van Nextcloud. Op een Debian- of Ubuntu-installatie is het patroon als volgt:
cd /var/www/nextcloud
sudo -E -u www-data php occ app:install fulltextsearch
sudo -E -u www-data php occ app:install fulltextsearch_elasticsearch
sudo -E -u www-data php occ app:install files_fulltextsearch
Gebruik het HTTP-account van uw distributie en volg de occ-richtlijnen van Nextcloud . Als een app is geïnstalleerd maar uitgeschakeld, gebruik dan occ app:enable APP_ID. Zorg ervoor dat alle drie de apps compatibel zijn met uw Nextcloud-release.
3. Configureer het platform en de bestandsaanbieder.
Open de beheerdersinstellingen en selecteer het gedeelte 'Volledige tekst zoeken'. Kies Elasticsearch als zoekplatform en voer vervolgens het adres van de Elasticsearch-servlet, een indexnaam en eventuele vereiste verbindingsgegevens of certificaatinstellingen in die beschikbaar zijn gesteld door uw geïnstalleerde connectorversie. Het adres moet bereikbaar zijn vanaf het Nextcloud-serverproces. Als beide services in hetzelfde containernetwerk draaien, localhostverwijst het adres meestal naar de Nextcloud-container zelf, niet naar de Elasticsearch-container; gebruik in dat geval de Elasticsearch-servicenaam of interne hostnaam.
Gebruik een indexnaam in kleine letters, bijvoorbeeld nextcloud; geef elke cloud een aparte index als ze een service delen. Aparte namen vereenvoudigen het beheer, maar vervangen geen toegangscontroles. Houd inloggegevens buiten schermafbeeldingen, tickets en shellgeschiedenis.
Schakel in de instellingen van de bestandsprovider indexering in voor de bestandstypen en het groottebereik dat uw gebruikers nodig hebben. Doorzoekbare inhoud is afhankelijk van de provider en de ondersteuning voor extractie; het indexeren van bestandsnamen alleen maakt tekst in een PDF niet doorzoekbaar. De bijlageprocessor van Elasticsearch extraheert tekst uit gangbare bestandsformaten zoals PDF en Office-documenten, maar er gelden extractielimieten en ondersteunde formaten. In Elasticsearch 8 is de functionaliteit voor het importeren van bijlagen standaard opgenomen; zie de referentie van de bijlageprocessor van Elastic . Voor scans of afbeeldingen is gewone tekstextractie uit documenten geen OCR: voeg alleen een OCR-provider toe als u die functionaliteit nodig hebt en de vereisten ervan hebt gecontroleerd. Houd de limieten voor bestandsgrootte beperkt op een server met beperkte resources.
4. Bouw de index op en houd deze actueel.
Voer een gezondheidscontrole uit voordat u gaat indexeren. Gebruik hiervoor de volgende opdracht vanuit de Nextcloud-directory:
sudo -E -u www-data php occ fulltextsearch:check
Los eerst de gemelde verbindings-, platform- of providerfouten op. Start daarna de initiële indexering:
sudo -E -u www-data php occ fulltextsearch:index
De eerste keer dat de indexering wordt uitgevoerd, worden de bestanden van de geselecteerde gebruikers doorzocht. Dit kan lang duren. Zorg ervoor dat de SSH-sessie stabiel blijft of voer de opdracht uit in een terminalmultiplexer zoals ` tmuxmv` en controleer het CPU-gebruik, het geheugen en de schijfruimte. Indexering kopieert de geëxtraheerde tekst en bestandsmetadata naar Elasticsearch; dit is geen vervanging voor Nextcloud-backups. Zorg ervoor dat de zoekindex en de bijbehorende inloggegevens worden beschermd en houd er rekening mee dat het verwijderen of opnieuw opbouwen van de index een volledige indexeringsronde kan vereisen.
Zorg ervoor dat Nextcloud-achtergrondtaken betrouwbaar werken bij doorlopende updates. Het project beschrijft ook een fulltextsearch:liveworker voor bijna onmiddellijke indexering; dit kan de updatevertraging verminderen, maar voegt wel een extra service toe die toezicht vereist. Begin met geplande taken en voeg de worker alleen toe als de vertraging een probleem vormt. Pas het voorbeeld van de upstream-service aan uw paden, account en opstartvolgorde van de database aan.
Controleer het resultaat en maak je afweging.
Nadat het indexeren is voltooid, zoekt u naar een opvallende zin die voorkomt in een klein testdocument, maar niet in de bestandsnaam. Controleer of Nextcloud het verwachte bestand retourneert voor een gebruiker met leesrechten. Upload of bewerk vervolgens een tweede testdocument, laat de geconfigureerde achtergrondtaak of live worker draaien en herhaal de zoekopdracht. Een succesvolle statuscontrole bewijst op zich niet dat de bestandsinhoud is geïndexeerd.
Als alleen bestandsnamen worden weergegeven, controleer dan de instellingen voor de bestandsprovider, het bestandstype en de -grootte, de extractieondersteuning en de indexeringslogboeken. Controleer bij verbindingsproblemen het eindpunt in het Nextcloud-netwerk, het TLS-vertrouwen en de inloggegevens.
Kies Elasticsearch wanneer zoeken op inhoud waardevol genoeg is om het onderhouden van een extra stateful service te rechtvaardigen. Als zoeken op bestandsnaam voldoende is, sla dan die extra resources en beveiligingskosten over. Controleer vóór productie-upgrades de exacte combinatie van Nextcloud, app en Elasticsearch; deze configuratie biedt geen ondersteuning voor elke implementatiemethode.