Visual Studio Code-Erweiterung für Azure Cognitive Search (eingestellt)

Die Visual Studio Code-Erweiterung für Azure Cognitive Search, die sich zuvor in der Vorschauphase befindet, wurde nicht zur allgemeinen Verfügbarkeit überstiegen und wird nun am 1. November 2022 eingestellt.

Obwohl die Erweiterung in Azure Marketplace nicht mehr verfügbar ist, ist der Code open sourced unter https://github.com/microsoft/vscode-azurecognitivesearch. Sie können das Tool für Ihre eigene Verwendung klonen und ändern.

Wenn Sie die Erweiterung verwenden, wird in diesem Artikel erläutert, wie Sie REST-API-Anforderungen interaktiv mithilfe der Azure Cognitive Search REST-APIs formulieren.

Voraussetzungen

Die folgenden Dienste und Tools sind für die Verwendung der Erweiterung erforderlich.

Installieren der Erweiterung

Weitere Informationen finden Sie in der Infodatei auf Github.

Verbinden mit Ihrem Abonnement

Starten Sie Visual Studio COde.

Wählen Sie Bei Azure anmelden... aus, und melden Sie sich bei Ihrem Azure-Konto an.

Sie sollten Ihre Abonnements sehen. Im folgenden Screenshot lautet der Abonnementname „Visual Studio Enterprise“ und enthält einen Suchdienst namens „azsearch-service“.

VVS Code Azure-Abonnements

Öffnen Sie zum Einschränken der angezeigten Abonnements die Befehlspalette (STRG+UMSCHALT+P oder BEFEHL+UMSCHALT+P), und suchen Sie nach Azure oder nach Abonnements auswählen. Es stehen auch Befehle für die An- und Abmeldung bei Ihrem Azure-Konto zur Verfügung.

Wenn Sie den Suchdienst erweitern, sehen Sie Baumelemente für jedes Element der kognitiven Suche: Indizes, Datenquellen, Indexer, Skillsets, Synonymzuordnungen und Aliase.

VS Code Azure-Suchstruktur

Diese Baumelemente können erweitert werden, um alle Ressourcen anzuzeigen, die Sie in Ihrem Suchdienst haben.

1\. Erstellen eines Index

Verwenden Sie zum Erstellen eines Indexes die REST-API zum Erstellen eines Indexes.

Mit der VS Code-Erweiterung müssen Sie sich nur mit dem Text der Anforderung befassen. Diese Schnellstartanleitung enthält eine exemplarische Indexdefinition sowie entsprechende Dokumente.

Indexdefinition

Bei der folgenden Indexdefinition handelt es sich um ein Beispielschema für fiktive Hotels.

Die Sammlung fields definiert die Struktur von Dokumenten im Suchindex. Jedes Feld verfügt über einen Datentyp sowie über eine Reihe zusätzlicher Attribute, die bestimmen, wie das Feld verwendet werden kann.

{
    "name": "hotels-quickstart",
    "fields": [
        {
            "name": "HotelId",
            "type": "Edm.String",
            "key": true,
            "filterable": true
        },
        {
            "name": "HotelName",
            "type": "Edm.String",
            "searchable": true,
            "filterable": false,
            "sortable": true,
            "facetable": false
        },
        {
            "name": "Description",
            "type": "Edm.String",
            "searchable": true,
            "filterable": false,
            "sortable": false,
            "facetable": false,
            "analyzer": "en.lucene"
        },
        {
            "name": "Description_fr",
            "type": "Edm.String",
            "searchable": true,
            "filterable": false,
            "sortable": false,
            "facetable": false,
            "analyzer": "fr.lucene"
        },
        {
            "name": "Category",
            "type": "Edm.String",
            "searchable": true,
            "filterable": true,
            "sortable": true,
            "facetable": true
        },
        {
            "name": "Tags",
            "type": "Collection(Edm.String)",
            "searchable": true,
            "filterable": true,
            "sortable": false,
            "facetable": true
        },
        {
            "name": "ParkingIncluded",
            "type": "Edm.Boolean",
            "filterable": true,
            "sortable": true,
            "facetable": true
        },
        {
            "name": "LastRenovationDate",
            "type": "Edm.DateTimeOffset",
            "filterable": true,
            "sortable": true,
            "facetable": true
        },
        {
            "name": "Rating",
            "type": "Edm.Double",
            "filterable": true,
            "sortable": true,
            "facetable": true
        },
        {
            "name": "Address",
            "type": "Edm.ComplexType",
            "fields": [
                {
                    "name": "StreetAddress",
                    "type": "Edm.String",
                    "filterable": false,
                    "sortable": false,
                    "facetable": false,
                    "searchable": true
                },
                {
                    "name": "City",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": true,
                    "sortable": true,
                    "facetable": true
                },
                {
                    "name": "StateProvince",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": true,
                    "sortable": true,
                    "facetable": true
                },
                {
                    "name": "PostalCode",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": true,
                    "sortable": true,
                    "facetable": true
                },
                {
                    "name": "Country",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": true,
                    "sortable": true,
                    "facetable": true
                }
            ]
        }
    ],
    "suggesters": [
        {
            "name": "sg",
            "searchMode": "analyzingInfixMatching",
            "sourceFields": [
                "HotelName"
            ]
        }
    ]
}

Klicken Sie zum Erstellen eines neuen Index mit der rechten Maustaste auf Indizes, und wählen Sie anschließend Neuen Index erstellen aus. Daraufhin wird ein Editor mit einem Namen wie indexes-new-28c972f661.azsindex angezeigt.

Fügen Sie die oben bereitgestellte Indexdefinition in das Fenster ein. Speichern Sie die Datei, und wählen Sie Hochladen aus, wenn Sie gefragt werden, ob Sie den Index aktualisieren möchten. Dieser Schritt erstellt den Index und fügt ihn der Baumansicht auf der linken Seite hinzu.

GIF: Erstellen eines Index

Wenn es ein Problem mit Ihrer Indexdefinition gibt, sollte eine Fehlermeldung ähnlich der folgenden angezeigt werden.

Fehlermeldung bei der Indexerstellung

Wenn ein Fehler auftritt, beheben Sie das Problem und speichern Sie die Datei erneut.

2\. Laden von Dokumenten

In der REST-API sind das Erstellen des Index und das Auffüllen des Index separate Schritte. In Azure Cognitive Search enthält der Index alle durchsuchbaren Daten. In diesem Schnellstart werden die Daten als JSON-Dokumente bereitgestellt. Für diese Aufgabe wird die REST-API zum Hinzufügen, Aktualisieren oder Löschen von Dokumenten verwendet.

So fügen Sie dem Index neue Dokumente hinzu:

  1. Erweitern Sie den von Ihnen erstellten Index hotels-quickstart. Klicken Sie mit der rechten Maustaste auf Dokumente, und wählen Sie Neues Dokument erstellen aus.

    Erstellen eines Dokuments

  2. Sie sollten einen JSON-Editor sehen, der das Schema Ihres Index abgeleitet hat.

    Erstellen eines Dokuments (JSON)

  3. Fügen Sie den folgenden JSON-Code ein, und speichern Sie anschließend die Datei. Sie werden aufgefordert, Ihre Änderungen zu bestätigen. Wählen Sie Hochladen aus, um die Änderungen zu speichern.

    {
        "HotelId": "1",
        "HotelName": "Secret Point Motel",
        "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
        "Category": "Boutique",
        "Tags": [ "pool", "air conditioning", "concierge" ],
        "ParkingIncluded": false,
        "LastRenovationDate": "1970-01-18T00:00:00Z",
        "Rating": 3.60,
        "Address": {
            "StreetAddress": "677 5th Ave",
            "City": "New York",
            "StateProvince": "NY",
            "PostalCode": "10022",
            "Country": "USA"
        } 
    }
    
  4. Wiederholen Sie diesen Vorgang für die drei verbleibenden Dokumente:

    Dokument 2:

    {
        "HotelId": "2",
        "HotelName": "Twin Dome Motel",
        "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
        "Category": "Boutique",
        "Tags": [ "pool", "free wifi", "concierge" ],
        "ParkingIncluded": false,
        "LastRenovationDate": "1979-02-18T00:00:00Z",
        "Rating": 3.60,
        "Address": {
            "StreetAddress": "140 University Town Center Dr",
            "City": "Sarasota",
            "StateProvince": "FL",
            "PostalCode": "34243",
            "Country": "USA"
        } 
    }
    

    Dokument 3:

    {
        "HotelId": "3",
        "HotelName": "Triple Landscape Hotel",
        "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.",
        "Category": "Resort and Spa",
        "Tags": [ "air conditioning", "bar", "continental breakfast" ],
        "ParkingIncluded": true,
        "LastRenovationDate": "2015-09-20T00:00:00Z",
        "Rating": 4.80,
        "Address": {
            "StreetAddress": "3393 Peachtree Rd",
            "City": "Atlanta",
            "StateProvince": "GA",
            "PostalCode": "30326",
            "Country": "USA"
        } 
    }
    

    Dokument 4:

    {
        "HotelId": "4",
        "HotelName": "Sublime Cliff Hotel",
        "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.",
        "Category": "Boutique",
        "Tags": [ "concierge", "view", "24-hour front desk service" ],
        "ParkingIncluded": true,
        "LastRenovationDate": "1960-02-06T00:00:00Z",
        "Rating": 4.60,
        "Address": {
            "StreetAddress": "7400 San Pedro Ave",
            "City": "San Antonio",
            "StateProvince": "TX",
            "PostalCode": "78216",
            "Country": "USA"
        }
    }
    

Im Dokumentabschnitt sollten nun alle vier Dokumente verfügbar sein.

Status nach dem Hochladen aller Dokumente

3\. Durchsuchen eines Index

Da der Index nun Inhalte enthält, können Sie Abfragen mithilfe der Search Documents REST API ausgeben:

  1. Klicken Sie mit der rechten Maustaste auf den Index, den Sie durchsuchen möchten, und wählen Sie Suchen aus. Dieser Schritt öffnet einen Editor mit einem ähnlichen Namen wie sandbox-b946dcda48.azs.

    Suchansicht der Erweiterung

  2. Eine einfache Abfrage ist bereits automatisch angegeben. Drücken Sie STRG+ALT+R oder BEFEHL+ALT+R, um die Abfrage zu übermitteln. Die Ergebnisse werden in einem Fenster auf der linken Seite angezeigt.

    Suchergebnisse in der Erweiterung

Beispielabfragen

Probieren Sie einige andere Abfragebeispiele aus, um ein Gefühl für die Syntax zu bekommen. Weiter unten finden Sie vier weitere Abfragen, die Sie ausprobieren können. Dem gleichen Editor können mehrere Abfragen hinzugefügt werden. Wenn Sie STRG+ALT+R oder BEFEHL+ALT+R drücken, wird die Zeile übermittelt, in der sich Ihr Cursor befindet.

Abfragen und Ergebnisse in paralleler Ansicht

In der ersten Abfrage wird nach boutique gesucht und die Suche mithilfe von select auf bestimmte Felder beschränkt. Es ist ein bewährtes Verfahren, nur die Felder per select auszuwählen, die Sie benötigen, da das Pullen unnötiger Daten die Latenz Ihrer Abfragen erhöhen kann. In der Abfrage wird außerdem $count=true festgelegt, um die Gesamtanzahl der Ergebnisse mit den Suchergebnissen zurückzugeben.

// Query example 1 - Search `boutique` with select and return count
search=boutique&$count=true&$select=HotelId,HotelName,Rating,Category

In der nächsten Abfrage geben Sie den Suchbegriff wifi an und fügen zudem einen Filter hinzu, um nur Ergebnisse zurückzugeben, deren Zustand gleich 'FL' ist. Die Ergebnisse werden außerdem nach dem Rating-Objekt des Hotels sortiert.

// Query example 2 - Search with filter, orderBy, select, and count
search=wifi&$filter=Address/StateProvince eq 'FL'&$select=HotelId,HotelName,Rating,Address/StateProvince&$orderby=Rating desc

Anschließend wird die Suche mit dem Parameter searchFields auf ein einzelnes durchsuchbares Feld beschränkt. Dies ist eine großartige Möglichkeit, Ihre Abfrage effizienter zu gestalten, wenn Sie wissen, dass Sie nur an Übereinstimmungen in bestimmten Feldern interessiert sind.

// Query example 3 - Limit searchFields
search=sublime cliff&$select=HotelId,HotelName,Rating&searchFields=HotelName

Eine weitere gängige Option, die in eine Abfrage einbezogen werden kann, ist facets. Mit Facetten können Sie Filter in Ihrer App erstellen, damit Benutzer leicht wissen, auf welche Werte sie herunterfiltern können.

// Query example 4 - Take the top two results, and show only HotelName and Category in the results
search=*&$select=HotelId,HotelName,Rating&searchFields=HotelName&facet=Category

Öffnen des Index im Portal

Wenn Sie Ihren Suchdienst im Portal anzeigen möchten, klicken Sie mit der rechten Maustaste auf den Namen des Suchdiensts, und wählen Sie Im Portal öffnen aus.

Bereinigen von Ressourcen

Wenn Sie in Ihrem eigenen Abonnement arbeiten, sollten Sie sich am Ende eines Projekts überlegen, ob Sie die erstellten Ressourcen noch benötigen. Ressourcen, die weiterhin ausgeführt werden, können Sie Geld kosten. Sie können entweder einzelne Ressourcen oder aber die Ressourcengruppe löschen, um den gesamten Ressourcensatz zu entfernen.

Ressourcen können im Portal über den Link Alle Ressourcen oder Ressourcengruppen im linken Navigationsbereich gesucht und verwaltet werden.

Denken Sie bei Verwendung eines kostenlosen Diensts an die Beschränkung auf maximal drei Indizes, Indexer und Datenquellen. Sie können einzelne Elemente über das Portal löschen, um unter dem Limit zu bleiben.

Nächste Schritte

Nachdem Sie nun wissen, wie Sie kerne Aufgaben ausführen, können Sie mit zusätzlichen REST-API-Aufrufen für erweiterte Features fortfahren, z. B. Indexer oder einrichten einer Anreicherungspipeline , die Inhaltstransformationen zur Indizierung hinzufügt. Als nächsten Schritt empfehlen wir den folgenden Link: