Über AlloyDB Omni auf Apache Solr-Daten zugreifen

Wählen Sie eine Dokumentationsversion aus:

Mit der externen Suchintegration in AlloyDB Omni können Sie auf Daten zugreifen und in Daten suchen, die in Apache Solr gespeichert sind. Durch diese Integration können Sie intensive Volltextsuchvorgänge, das Parsen komplexer Abfragen und erweiterte Facettierungsarbeitslasten von Ihrer Betriebsdatenbank auf Solr auslagern. So werden die Abfragelatenz und der Gesamtsystemdurchsatz verbessert.

Hinweis

Führen Sie zuerst die folgenden Schritte aus:

Solr-Anmeldedaten in Secret Manager speichern

AlloyDB Omni speichert Ihre Solr-Anmeldedaten in Secret Manager und liest sie daraus. Für die HTTP-Basisauthentifizierung muss der Wert des Secrets in Secret Manager ein base64-codierter String im Format username:password sein. Weitere Informationen zur Verwendung von Secret Manager finden Sie unter Secret mit Secret Manager erstellen und darauf zugreifen.

Achten Sie darauf, dass das Dienstkonto, das von AlloyDB Omni verwendet wird, die Berechtigung secretmanager.secretAccessor hat, um das Secret aus Secret Manager zu lesen. Weitere Informationen finden Sie unter Zugriff auf Secrets verwalten.

external_search_fdw-Erweiterung aktivieren und konfigurieren

Wenn Sie die Integration mit Solr starten möchten, müssen Sie den Zugriff auf Ihren Solr-Cluster über einen Foreign Data Server konfigurieren.

  1. Stellen Sie eine Verbindung zu Ihrer Datenbank her und aktivieren Sie die Erweiterung:

    CREATE EXTENSION external_search_fdw;
    
  2. Fremden Server erstellen:

    CREATE SERVER SOLR_SERVER_NAME
    FOREIGN DATA WRAPPER external_search_fdw
    OPTIONS (
      server 'SOLR_SERVER_HOST_PORT',
      search_provider 'solr',
      auth_mode 'secret_manager',
      auth_method 'AUTH_METHOD',
      secret_path 'SECRET_PATH'
    );
    

    Ersetzen Sie die folgenden Variablen:

    • SOLR_SERVER_NAME: Name für Ihren ausländischen Datenserver. Beispiel: solr

    • SOLR_SERVER_HOST_PORT: Öffentlich zugängliche URL für Ihren Solr-Cluster. Beispiel: https://node1.solr.test.com:8983

    • AUTH_METHOD: Der zu verwendende Authentifizierungstyp. Beispiel: Basic.

    • SECRET_PATH: Secret Manager-Pfad zu Ihren Solr-Anmeldedaten. Beispiel: projects/PROJECT_ID/secrets/apikey/versions/1

  3. Definieren Sie die Nutzerzuordnung für den Solr-Server:

    CREATE USER MAPPING FOR CURRENT_USER
    SERVER SOLR_SERVER_NAME;
    
  4. Ordnen Sie das Schema Ihrer Solr-Sammlung einer PostgreSQL-Fremdtabelle zu.

    CREATE FOREIGN TABLE SOLR_FD_TABLE(
        metadata external_search_fdw_schema.OpaqueMetadata,
        SOLR_FIELDS)
           SERVER SOLR_SERVER_NAME
           OPTIONS(
                remote_table_name 'SOLR_COLLECTION_NAME',
                unique_key_sort_suffix 'UNIQUE_KEY_SORT_SUFFIX'
    );
    

    Ersetzen Sie die folgenden Variablen:

    • SOLR_FD_TABLE: der Name der externen Datentabelle, die Ihre Solr-Tabelle darstellt. Beispiel: my-fd-solr-table.

    • SOLR_FIELDS: Eine durch Kommas getrennte Liste, in der jeder Eintrag dem Format solr_field_name PG_DATA_TYPE entspricht. Eine Liste der unterstützten Solr-Datentypen und der entsprechenden PostgreSQL-Typen finden Sie unter Unterstützte Datentypen.

    • UNIQUE_KEY_SORT_SUFFIX: (Optional) Das eindeutige Schlüsselfeld in Solr oder eine durch Kommas getrennte Liste mit mehreren Feldern und ihren Sortierreihenfolgen, z. B. myid0 ASC, myid1 DESC, die für die Paginierung verwendet wird. Die Standardeinstellung ist id.

    • PG_DATA_TYPE: Der PostgreSQL-Typ, dem Sie ihn zuordnen möchten. Beispiel:

      • TEXT für Stringdaten.
      • INTEGER für numerische Daten.
    • SOLR_COLLECTION_NAME: Der Name Ihrer Solr-Sammlung. Beispiel: my-solr-collection.

Solr-Daten abfragen

AlloyDB Omni konvertiert SQL-Abfragen in Solr REST API-Abfragen.

Standard-SQL-Abfragen

Für den Suchausdruck können Sie Standard-SQL mit Lucene-Syntax verwenden.

SELECT id, body
FROM SOLR_FD_TABLE
WHERE FILTER
ORDER BY metadata <@> 'QUERY';

Ersetzen Sie die folgenden Variablen:

  • SOLR_FD_TABLE: Name der externen Datentabelle, die Ihre Solr-Tabelle darstellt. Beispiel: my-fd-solr-table.

  • FILTER: (Optional) Filter, der auf Ihre Solr-Abfrage angewendet werden soll. Beispiel: AND qubits < 105.

  • QUERY: Die an Solr zu sendende Abfrage. Beispiel: body:database.

Abfrage-DSL

Für erweiterte Anwendungsfälle wie die Implementierung verschachtelter Abfragen, benutzerdefinierter Sortierung oder komplexer Filterung verwenden Sie die Solr-Abfragesprache im JSON-Stil.

SELECT id, title
FROM SOLR_FD_TABLE
ORDER BY metadata <@> $${
  "query": "title:solr",
  "filter": ["category:software", "inStock:true"],
  "sort": "price desc"
}$$
LIMIT 1;

Ersetzen Sie SOLR_FD_TABLE durch den Namen der externen Datentabelle, die Ihre Solr-Tabelle darstellt. Beispiel: my-fd-solr-table.

Wenn Sie eine hybride Suche für Ihre Solr-Daten ausführen möchten, führen Sie die Ergebnisse der Solr-Tokensuche mit den Ergebnissen der AlloyDB Omni-Vektorsuche zusammen.

SELECT *
FROM ai.hybrid_search(
  ARRAY[
    '{"limit": LIMIT,
      "weight": WEIGHT,
      "table_name": "SOLR_FD_TABLE",
      "key_column": "id",
      "query_text_input": "QUERY"}'::jsonb
  ])
ORDER BY score DESC;

Ersetzen Sie die folgenden Variablen:

  • LIMIT: Anzahl der zurückzugebenden Ergebnisse. Beispiel: 10.

  • WEIGHT: Beitrag dieses Sucheintrags zum gesamten Reciprocal Rank Fusion (RRF). Beispiel: 0.5 Wenn Sie keine Gewichte angeben, werden sie gleichmäßig verteilt. Weitere Informationen finden Sie unter Parameter für die hybride Suche.

  • SOLR_FD_TABLE: Name der externen Datentabelle, die Ihre Solr-Tabelle darstellt. Beispiel: my-fd-solr-table.

  • QUERY: Die an Solr zu sendende Abfrage. Beispiel: body:database.

Fehlerbehebung

Wenn beim Abfragen Ihres Solr-Clusters Authentifizierungs- oder Verbindungsprobleme auftreten, prüfen Sie Folgendes:

  • HTTP-Authentifizierungsfehler 401 oder 403: Prüfen Sie, ob Ihr Solr-Secret im Secret Manager einen base64-codierten String im Format username:password enthält und ob das Dienstkonto, das von AlloyDB Omni verwendet wird, die Berechtigung secretmanager.secretAccessor hat.
  • Zeitüberschreitungen bei Verbindungen: Prüfen Sie die Netzwerkregeln und die Firewallkonfiguration zwischen AlloyDB Omni und Ihrem Solr-Endpunkt.

Beschränkungen

  • Schreibgeschützt: AlloyDB Omni liest Solr-Daten, schreibt aber nicht in Solr.
  • Datenverwaltung: AlloyDB Omni indexiert Ihre Datenbankdaten nicht automatisch in Solr. Sie sind dafür verantwortlich, Ihre Solr-Sammlungen zu füllen und die Konsistenz zwischen den Daten in AlloyDB Omni und den indexierten Daten in Solr aufrechtzuerhalten.
  • Schemamanagement: AlloyDB Omni synchronisiert Schemas nicht automatisch mit Solr. Wenn sich das Schema Ihrer Solr-Sammlung ändert, müssen Sie das Schema der entsprechenden externen PostgreSQL-Tabelle manuell aktualisieren.
  • Nicht unterstützte Typen: Spezialisierte Solr-Typen wie geospatiale Typen werden nicht unterstützt.
  • Stabiles Sortieren: Damit die Paginierung richtig funktioniert, ist in Solr ein eindeutiger Schlüssel im Sortierausdruck erforderlich. Standardmäßig wird das Feld id verwendet. Wenn Sie ein benutzerdefiniertes Feld oder eine durch Kommas getrennte Liste mit mehreren Feldern und den zugehörigen Sortierreihenfolgen angeben möchten, verwenden Sie die Option unique_key_sort_suffix, wenn Sie die externe Tabelle erstellen. Geben Sie beispielsweise myid0 ASC, myid1 DESC an:

Nächste Schritte