Übersicht
Bei normaler Suche in Fess wird durch Paging-Funktion nur eine bestimmte Anzahl von Suchergebnissen angezeigt. Wenn Sie alle Suchergebnisse auf einmal abrufen möchten, verwenden Sie die Scroll-Search-Funktion.
Diese Funktion ist nützlich, wenn alle Suchergebnisse verarbeitet werden müssen, z. B. für Massen-Datenexport, Backup oder Analyse großer Datenmengen.
Anwendungsfälle
Scroll-Suche eignet sich für folgende Zwecke:
Vollständiger Export von Suchergebnissen
Abruf großer Datenmengen für Datenanalyse
Datenabruf in Batch-Verarbeitung
Datensynchronisation mit externen Systemen
Datenerfassung für Berichtsgenerierung
Warnung
Scroll-Suche gibt große Datenmengen zurück und verbraucht daher mehr Serverressourcen im Vergleich zur normalen Suche. Aktivieren Sie nur bei Bedarf.
Konfigurationsmethode
Aktivierung der Scroll-Suche
Standardmäßig ist Scroll-Suche aus Sicherheits- und Leistungsgründen deaktiviert. Zur Aktivierung ändern Sie in app/WEB-INF/classes/fess_config.properties oder /etc/fess/fess_config.properties folgende Einstellung:
Bemerkung
Nach Konfigurationsänderung muss Fess neu gestartet werden.
Konfiguration von Response-Feldern
Sie können Felder anpassen, die in Suchergebnissen enthalten sind. Standardmäßig werden viele Felder zurückgegeben, Sie können jedoch zusätzliche Felder angeben.
Bemerkung
content ist standardmäßig nicht in den Response-Feldern enthalten.
Timeout-Einstellung für Scroll
Die Gültigkeitsdauer des Scroll-Kontexts wird serverseitig konfiguriert. Standard ist 3m (3 Minuten).
Verwendungsmethode
Grundlegende Verwendung
Zugriff auf Scroll-Suche erfolgt über folgende URL:
Suchergebnisse werden im NDJSON-Format (Newline Delimited JSON) zurückgegeben. Pro Zeile wird ein Dokument im JSON-Format ausgegeben.
Beispiel:
Request-Parameter
Für Scroll-Suche können folgende Parameter verwendet werden:
Bemerkung
Scroll-Suche unterstützt nur die GET-Methode.
| Parametername | Beschreibung |
|---|---|
q | Suchabfrage (erforderlich) |
num | Anzahl pro Scroll-Abruf (Standard: 10, Maximum: 100) |
fields.label | Filterung nach Label |
Bemerkung
Der maximale Wert von num wird durch paging.search.page.max.size gesteuert.
Angabe von Suchabfragen
Sie können Suchabfragen wie bei normaler Suche angeben.
Beispiel: Schlüsselwortsuche
Beispiel: Feldspezifische Suche
Beispiel: Vollständiger Abruf (ohne Suchbedingung)
Angabe der Abrufanzahl
Sie können die Anzahl pro Scroll-Abruf ändern.
Bemerkung
Zu großer num-Parameter erhöht Speichernutzung. Normalerweise wird ein Wert bis maximal 100 empfohlen.
Filterung nach Label
Sie können nur Dokumente bestimmter Labels abrufen.
Hinweis zur Authentifizierung
Warnung
Bei der Scroll-Suche wird die rollenbasierte Zugriffskontrolle (RBAC) von Fess nicht angewendet. Alle Dokumente, die den Suchkriterien entsprechen, werden unabhängig von den Benutzerberechtigungen zurückgegeben. Falls Zugriffsbeschränkungen erforderlich sind, konfigurieren Sie IP-Adressen-Beschränkung oder Authentifizierung über einen Reverse-Proxy.
Response-Format
NDJSON-Format
Scroll-Such-Response wird im NDJSON-Format (Newline Delimited JSON) zurückgegeben. Jede Zeile repräsentiert ein Dokument.
Beispiel:
Response-Felder
Standardmäßig enthaltene Felder:
url: Dokument-URLdoc_id: Dokument-IDtitle: Titelscore: Such-Scoreboost: Boost-Wertcontent_length: Inhaltslängehost: Hostnamesite: Sitecontent_title: Inhaltstitelcontent_description: Inhaltsbeschreibungurl_link: URL-Linklast_modified: Letztes Änderungsdatumtimestamp: Zeitstempelcreated: Erstellungsdatummimetype: MIME-Typfiletype: Dateitypfilename: Dateinamefavorite_count: Favoritenanzahlclick_count: Klickanzahlconfig_id: Konfiguration-ID_id: Interne IDlabel: Label
Bemerkung
content ist standardmäßig nicht in den Response-Feldern enthalten. Um content zu erhalten, konfigurieren Sie query.additional.scroll.response.fields=content.
Datenverarbeitungsbeispiele
Verarbeitungsbeispiel mit Python
Speichern in Datei
Beispiel zum Speichern von Suchergebnissen in Datei:
Konvertierung zu CSV
Beispiel für Konvertierung zu CSV mit jq-Befehl:
Datenanalyse
Beispiel für Analyse abgerufener Daten:
Leistung und Best Practices
Effiziente Verwendung
Angemessene num-Parameter-Einstellung
Zu klein erhöht Kommunikations-Overhead
Zu groß erhöht Speichernutzung
Standard-Maximum: 100
Optimierung von Suchbedingungen
Suchbedingungen so angeben, dass nur benötigte Dokumente abgerufen werden
Vollständigen Abruf nur bei wirklichem Bedarf ausführen
Nutzung von Off-Peak-Zeiten
Abruf großer Datenmengen in Zeiten niedriger Systemlast ausführen
Verwendung in Batch-Verarbeitung
Regelmäßige Datensynchronisation als Batch-Job ausführen
Optimierung der Speichernutzung
Bei Verarbeitung großer Datenmengen verwenden Sie Streaming-Verarbeitung zur Reduzierung der Speichernutzung.
Sicherheitsüberlegungen
Zugriffsbeschränkung
Da Scroll-Suche große Datenmengen zurückgibt, konfigurieren Sie angemessene Zugriffsbeschränkungen.
IP-Adressen-Beschränkung
Zugriff nur von bestimmten IP-Adressen erlauben
API-Authentifizierung
API-Token oder Basic-Authentifizierung verwenden
Rollenbasierte Beschränkung
Zugriff nur für Benutzer mit bestimmten Rollen erlauben
Rate-Limiting
Zur Vermeidung übermäßigen Zugriffs wird Konfiguration von Rate-Limiting im Reverse-Proxy empfohlen.
Fehlersuche
Scroll-Suche nicht verfügbar
Überprüfen Sie, ob
api.search.scrollauftruegesetzt ist.Überprüfen Sie, ob Fess neu gestartet wurde.
Überprüfen Sie Fehlerprotokolle.
Timeout-Fehler tritt auf
Erhöhen Sie Wert von
index.scroll.search.timeout.Verkleinern Sie
num-Parameter für verteilte Verarbeitung.Grenzen Sie Suchbedingungen ein, um abzurufende Datenmenge zu reduzieren.
Speichermangel-Fehler
Verkleinern Sie
num-Parameter.Erhöhen Sie Heap-Speichergröße von Fess.
Überprüfen Sie Heap-Speichergröße von OpenSearch.
Response ist leer
Überprüfen Sie, ob Suchabfrage korrekt ist.
Überprüfen Sie, ob angegebene Labels oder Filterbedingungen korrekt sind.
Überprüfen Sie Berechtigungseinstellungen für rollenbasierte Suche.
Referenzinformationen
Suchfunktionen - Details zu Suchfunktionen
Suchbezogene Konfigurationen - Suchbezogene Konfigurationen