Freigeben über


Verwenden des abfrageparameters $search in Microsoft Graph-APIs

Der $search Abfrageparameter ist ein leistungsstarker Filtermechanismus in Microsoft Graph, mit dem Sie bestimmte Daten durch übereinstimmende Suchkriterien finden können.

Die Unterstützung für diesen Abfrageparameter variiert je nach Entität. Einige Entitäten, z. B. Microsoft Entra Ressourcen, die von directoryObject abgeleitet werden, unterstützen $search nur in erweiterten Abfragen.

In diesem Artikel wird erläutert, wie Sie den $search Abfrageparameter effektiv mit drei wichtigen Ressourcentypen verwenden: E-Mail-Nachrichten, Personen und Microsoft Entra ID-Objekte (Verzeichnisobjekte). Sie lernen die spezifischen Syntaxanforderungen, die unterstützten Eigenschaften und das Suchverhalten für jeden Ressourcentyp kennen.

Verwenden von $search für Nachrichtensammlungen

Sie können Nachrichten basierend auf bestimmten Nachrichteneigenschaften durchsuchen. Die Suchergebnisse werden nach Datum und Uhrzeit des Sendens der Nachricht sortiert. Eine $search Anforderung gibt bis zu 1.000 Ergebnisse zurück.

Wenn Sie Nachrichten ohne Angabe von Nachrichteneigenschaften durchsuchen, zielt die Suche auf die folgenden Standardeigenschaften ab: from, subject und body.

Im folgenden Beispiel werden alle Nachrichten im Posteingang des angemeldeten Benutzers zurückgegeben, die das Wort „Pizza“ in einer der drei Standardsucheigenschaften enthalten:

GET https://graph.microsoft.com/v1.0/me/messages?$search="pizza"

Alternativ können Sie Nachrichten durchsuchen, indem Sie Nachrichteneigenschaftsnamen angeben, die die KQL-Syntax (Keyword Query Language) erkennt. Diese Eigenschaftennamen entsprechen den in der message-Entität von Microsoft Graph definierten Eigenschaften. Outlook und andere Microsoft 365-Anwendungen wie SharePoint unterstützen die KQL-Syntax, die eine gemeinsame Ermittlungsdomäne für ihre Datenspeicher bereitstellt.

Durchsuchbare E-Mail-Eigenschaft Beschreibung Beispiel
Anlage Namen von Dateien, die an eine E-Mail-Nachricht angefügt sind. ABRUFEN../me/messages?$search="attachment:api-catalog.md"
bcc Das bcc-Feld einer E-Mail-Nachricht, das als SMTP-Adresse, Anzeigename oder Alias angegeben ist. ABRUFEN../me/messages?$search="bcc:samanthab@contoso.com"&$select=subject,bccRecipients
Text Text einer E-Mail. ABRUFEN../me/messages?$search="body:excitement"
cc Das cc-Feld einer E-Mail-Nachricht, das als SMTP-Adresse, Anzeigename oder Alias angegeben ist. ABRUFEN../me/messages?$search="cc:danas"&$select=subject,ccRecipients
Von Der Absender einer E-Mail-Nachricht, der als SMTP-Adresse, Anzeigename oder Alias angegeben ist. ABRUFEN../me/messages?$search="from:randiw"&$select=subject,from

ABRUFEN../me/messages?$search="from:adelev OR from:alexw OR from: allanD"&$select=subject, from
hasAttachment true , wenn eine E-Mail-Nachricht eine Anlage enthält, die keine Inlineanlage ist; false sonst. ABRUFEN../me/messages?$search="hasAttachments:true"
Wichtigkeit Die Wichtigkeit einer E-Mail-Nachricht, die ein Absender beim Senden einer Nachricht angeben kann. Mögliche Werte sind low, mediumoder high. ABRUFEN../me/messages?$search="importance:high"&$select=subject,importance
Art Der Typ der Nachricht. Mögliche Werte sind contacts, docs, email, faxes, im, journals, meetings, notestaskspostsrssfeedsoder .voicemail ABRUFEN../me/messages?$search="kind:voicemail"
Teilnehmer Die von-, an-, cc- und bcc-Felder einer E-Mail-Nachricht, die als SMTP-Adressen, Anzeigenamen oder Aliase angegeben sind. ABRUFEN../me/messages?$search="participants:danas"
Empfangen Das Datum, an dem ein Empfänger eine E-Mail-Nachricht erhalten hat. ABRUFEN../me/messages?$search="received:07/23/2018"&$select=subject,receivedDateTime
recipients Die Felder to, cc und bcc einer E-Mail-Nachricht, die als SMTP-Adresse, Anzeigename oder Alias angegeben sind. ABRUFEN../me/messages?$search="recipients:randiq"&$select=subject,toRecipients,ccRecipients,bccRecipients
Gesendet Das Datum, an dem eine E-Mail-Nachricht vom Absender gesendet wurde. ABRUFEN../me/messages?$search="sent:07/23/2018"&$select=subject,sentDateTime
size Die Größe eines Elements in Byte. ABRUFEN../me/messages?$search="size:1..500000"
Betreff Der Text in der Betreffzeile einer E-Mail. ABRUFEN../me/messages?$search="subject:has"&$select=subject
An Das An-Feld einer E-Mail-Nachricht, das als SMTP-Adresse, Anzeigename oder Alias angegeben ist. ABRUFEN.../me/messages?$search="to:randiw"&$select=subject,toRecipients

Weitere Informationen zu durchsuchbaren E-Mail-Eigenschaften, KQL-Syntax, unterstützten Operatoren und Suchtipps finden Sie in diesen Artikeln:

Verwenden von $search für Personensammlungen

Sie können sich auf die Eigenschaften displayName und emailAddresses der Person-Ressource anwenden$search. Anforderungen geben standardmäßig bis zu 250 Ergebnisse zurück.

Die folgende Anforderung sucht in der Personenobjektsammlung für den angemeldeten Benutzer nach "Irene McGowan". Microsoft Graph durchsucht die Eigenschaften displayName und emailAddresses .

GET https://graph.microsoft.com/v1.0/me/people/?$search="Irene McGowen"

Das folgende Beispiel zeigt die Antwort.

HTTP/1.1 200 OK
Content-type: application/json

{
    "value": [
       {
           "id": "C0BD1BA1-A84E-4796-9C65-F8A0293741D1",
           "displayName": "Irene McGowan",
           "givenName": "Irene",
           "surname": "McGowan",
           "birthday": "",
           "personNotes": "",
           "isFavorite": false,
           "jobTitle": "Auditor",
           "companyName": null,
           "yomiCompany": "",
           "department": "Finance",
           "officeLocation": "12/1110",
           "profession": "",
           "userPrincipalName": "irenem@contoso.com",
           "imAddress": "sip:irenem@contoso.com",
           "scoredEmailAddresses": [
               {
                   "address": "irenem@contoso.com",
                   "relevanceScore": -16.446060612802224
               }
           ],
           "phones": [
               {
                   "type": "Business",
                   "number": "+1 412 555 0109"
               }
           ],
           "postalAddresses": [],
           "websites": [],
           "personType": {
               "class": "Person",
               "subclass": "OrganizationUser"
           }
       }
   ]
}

Weitere Informationen zur Personen-API finden Sie unter Abrufen von Informationen über die entsprechenden Personen.

Verwenden von $search für Verzeichnisobjektauflistungen

Microsoft Entra ID Ressourcen und deren Beziehungen, die von directoryObject abgeleitet werden, unterstützen den $search Abfrageparameter nur in erweiterten Abfragen.

Hinweis

  • Der $search-Abfrageparameter steht auf Azure AD B2C-Mandanten derzeit nicht zur Verfügung.
  • Es gibt ein bekanntes Problem mit $search in Verzeichnisobjekten für Werte, die ein kaufmännisches Und-Zeichen (&) enthalten.

Die Suchimplementierung unterstützt keine "contains"-Logik. Stattdessen wird ein Tokenisierungsansatz verwendet, bei dem Wörter aus Eigenschaftswerten und Suchzeichenfolgen mithilfe von Leerzeichen, Zahlen, unterschiedlicher Groß-/Kleinschreibung und Symbolen extrahiert werden, wie in diesen Beispielen gezeigt:

  • Leerzeichen: hello world =>hello, world
  • Andere Groß-/Kleinschreibung1⁾: HelloWorld oder helloWORLD =>hello, world
  • Symbole2⁾: hello.world =>hello, ., world, , helloworld
  • Zahlen: hello123world =>hello, 123, world

1⁾ Bei unterschiedlichen Groß- und Kleinschreibungen funktioniert die Tokenisierung derzeit nur, wenn die Groß- und Kleinschreibung geändert wird. Beispielsweise HELLOworld ist ein einzelnes Token: helloworld, und HelloWORld ist zwei Token: hello, world.

2⁾ Die Tokenisierungslogik kombiniert auch Wörter, die nur durch Symbole getrennt sind. Beispiel: Suchen nach helloworld Sucht und hello-worldhello.world.

Nach der Tokenisierung werden Token unabhängig von der ursprünglichen Groß-/Kleinschreibung und in beliebiger Reihenfolge abgeglichen. Beispielsweise entspricht displayName 李四(David Li) Suchzeichenfolgen wie 李四(David Li), , David李四, Li, David), (李四, . Li 李 Eine Änderung des Alphabets (z. B. von Lateinisch zu Kyrillisch oder Chinesisch) führt nicht zu einem neuen Token. Beispielsweise entspricht displayName 蓝色group den 蓝色group Suchzeichenfolgen und 蓝色 , aber nicht group. DisplayName group蓝色 entspricht den group蓝色 Suchzeichenfolgen und group , aber nicht 蓝色 oder .

Die tokenisierte Suche funktioniert nur für die Felder displayName und description . Jedes Zeichenfolgentypfeld kann in $searchverwendet werden, bei anderen Feldern als displayName und description wird jedoch standardmäßig verhalten $filterstartswith .

Beispiel:

GET https://graph.microsoft.com/v1.0/groups/?$search="displayName:OneVideo" OR "mail:onevideo"
ConsistencyLevel: eventual

Dadurch wird nach allen Gruppen mit Anzeigenamen mit Token und video gesucht, oder nach E-Mails, die one mit onevideobeginnen.

Sie können zusammen mit $filterverwenden$search:

GET https://graph.microsoft.com/v1.0/groups/?$filter=mailEnabled eq true&$search="displayName:OneVideo"
ConsistencyLevel: eventual

Dadurch wird nach allen E-Mail-aktivierten Gruppen mit Anzeigenamen gesucht, die wie "OneVideo" aussehen. Die Ergebnisse werden basierend auf einer logischen Konjunktion (AND) von $filter und der gesamten Abfrage im $searchgefiltert.

Die Suchsyntax folgt den folgenden Regeln:

  • Allgemeines Format: $search="clause1" [AND | OR] "clauseX"
  • Anzahl von Klauseln: Eine beliebige Anzahl von Klauseln wird unterstützt. Klammern für rangfolgende Klammern werden ebenfalls unterstützt.
  • Klauselsyntax: "<property>:<text to search>"
    • Sie müssen den Eigenschaftennamen in der -Klausel angeben.
    • Die gesamte Klausel muss in doppelte Anführungszeichen eingeschlossen werden. Wenn sie doppelte Anführungszeichen oder umgekehrte Schrägstriche enthält, versehen Sie sie mit einem umgekehrten Schrägstrich. Alle anderen Sonderzeichen müssen URL-codiert sein.
  • Logische Operatoren: AND - und OR -Operatoren müssen sich außerhalb von doppelten Anführungszeichen und in Großbuchstaben enthalten.
  • Suchverhalten: Die True-Suche wird nur für displayName - und description-Eigenschaften unterstützt. Jede Eigenschaft, die in $filter verwendet werden kann, kann auch innerhalb von $search verwendet werden. Andere Eigenschaften als displayName und description werden standardmäßig $filter mit dem Verhalten "startsWith" verwendet, wenn die Suche nicht unterstützt wird.
  • Tokenisierung: Sowohl die Zeichenfolgeneingaben, die Sie in $search bereitstellen, als auch die durchsuchbaren Eigenschaften werden nach Leerzeichen, unterschiedlicher Groß-/Kleinschreibung und Zeichentypen (Zahlen und Sonderzeichen) in Teile aufgeteilt.

Die folgende Tabelle enthält einige Beispiele:

Objektklasse Beschreibung Beispiel
Benutzer Der Anzeigename des Benutzers im Adressbuch. ABRUFEN../users?$search="displayName:Guthr"
Benutzer Der Anzeigename oder die E-Mail-Adresse des Benutzers im Adressbuch. ABRUFEN../users?$search="displayName:Guthr" OR "mail:Guthr"
Gruppe Der Anzeigename oder die Beschreibung der Gruppe im Adressbuch. ABRUFEN../groups?$search="description:One" AND ("displayName:Video" OR "displayName:Drive")
Gruppe Der Anzeigename einer E-Mail-aktivierten Gruppe im Adressbuch. ABRUFEN../groups?$filter=mailEnabled eq true&$search="displayName:OneVideo"