Verwenden des abfrageparameters $search

Neben anderen OData-Abfrageparametern unterstützt Microsoft Graph den $search-Abfrageparameter, um die Ergebnisse einer Anforderung so zu beschränken, dass sie einem Suchkriterium entsprechen.

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

Hinweis

Der $search-Abfrageparameter steht auf Azure AD B2C-Mandanten derzeit nicht zur Verfügung.

Es gibt ein bekanntes Problem im Zusammenhang mit der Codierung von Amper- und -Symbolen (&) in $search Ausdrücken auf dem v1.0 Endpunkt. Weitere Informationen zu dem Problem und die empfohlene Problemumgehung finden Sie unter Bekanntes Problem: $search für Verzeichnisobjekte schlägt für codiertes kaufmännisches und -zeichen (&) fehl.

Verwenden von $search in Nachrichtensammlungen

Sie können Nachrichten basierend auf einem Wert in bestimmten Nachrichteneigenschaften durchsuchen. Die Suchergebnisse sind nach Datum und Uhrzeit sortiert, zu dem bzw. der die Nachricht gesendet wurde. Eine $search Anforderung gibt bis zu 1000 Ergebnisse zurück.

Wenn Sie eine Suche nach Nachrichten durchführen und nur einen Wert ohne bestimmte Nachrichteneigenschaften angeben, wird die Suche anhand der Standardsucheigenschaftenfrom, subject und body ausgeführt.

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 eine Suche nach Nachrichten durchführen, indem Sie die Nachrichteneigenschaftennamen in der folgenden Tabelle angeben, die durch die KQL-Syntax erkannt werden. 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 und bieten den Komfort einer gemeinsamen Discovery-Domäne für ihre Datenspeicher.

Durchsuchbare E-Mail-Eigenschaft Beschreibung Beispiel
Anlage Die Namen der an eine E-Mail angefügten Dateien. 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
hasAttachment „True“, wenn eine E-Mail eine Anlage enthält, die keine Inlineanlage ist, andernfalls „false“. ABRUFEN../me/messages?$search="hasAttachments:true"
Wichtigkeit Die Wichtigkeit einer E-Mail-Nachricht, die ein Absender festlegen kann, wenn er eine Nachricht sendet. Die möglichen Werte sind low, medium oder high. ABRUFEN../me/messages?$search="importance:high"&$select=subject,importance
Art Der Typ der Nachricht. Die möglichen Werte sind contacts, docs, email, faxes, im, journals, meetings, notes, posts, rssfeeds, tasks oder 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 eine E-Mail-Nachricht von einem Empfänger empfangen wurde. ABRUFEN../me/messages?$search="received:07/23/2018"&$select=subject,receivedDateTime
recipients Die an-, cc- und bcc-Felder einer E-Mail-Nachricht, die als SMTP-Adressen, Anzeigenamen oder Aliase angegeben sind. ABRUFEN../me/messages?$search="recipients:randiq"&$select=subject,toRecipients,ccRecipients,bccRecipients
Gesendet Das Datum, an dem eine E-Mail 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, zu KQL-Syntax, unterstützten Operatoren und Tipps für die Suche finden Sie in den folgenden Artikeln:

Verwenden von $search in Personensammlungen

Sie können die Personen-API von Microsoft Graph verwenden, um Personen abzurufen, die für einen Benutzer am relevantesten sind. Die Relevanz wird durch die Kommunikations- und Zusammenarbeitsmuster und Geschäftsbeziehungen des Benutzers bestimmt. Die Personen-API unterstützt den $search-Abfrageparameter. Eine $search-Anforderung gibt bis zu 250 Ergebnisse zurück.

Personensuchen werden sowohl für die Eigenschaft displayName als auch für die Eigenschaft emailAddress der Ressource vom Typ person ausgeführt.

Die folgende Anforderung führt eine Suche nach einer Person mit dem Namen „Irene McGowen“ in den Eigenschaften displayName und emailAddress für jede Person in der Sammlung people des angemeldeten Benutzers durch. Da eine Person mit dem Namen „Irene McGowan“ für den angemeldeten Benutzer relevant ist, werden die Informationen für „Irene McGowan“ zurückgegeben.

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 Verzeichnisobjektsammlungen

Hinweis

Es gibt ein bekanntes Problem im Zusammenhang mit $search on-Verzeichnisobjekten für Werte, die ein kaufmännisches Und-Zeichen (&) enthalten.

Microsoft Entra ID Ressourcen und deren Beziehungen, die von directoryObject abgeleitet werden, unterstützen den $search Abfrageparameter nur in erweiterten Abfragen. Die Suchimplementierung unterstützt keine "contains"-Logik. Stattdessen wird ein Tokenisierungsansatz verwendet, bei dem Wörter aus dem Eigenschaftswert und der Suchzeichenfolge extrahiert werden, wobei Leerzeichen, Zahlen, unterschiedliche Groß- und Kleinschreibung und Symbole verwendet werden, wie in den folgenden 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⁾ Derzeit funktioniert die Tokenisierung nur, wenn die Groß-/Kleinschreibung von Kleinbuchstaben in Großbuchstaben geändert wird. HELLOworld Daher wird als einzelnes Token betrachtet: helloworld, und HelloWORld sind zwei Token: hello, world. ⁽2⁾ Tokenisierungslogik kombiniert auch Wörter, die nur durch Symbole getrennt sind; Wenn Sie z. B. nach suchenhelloworld, werden und hello.worldgefundenhello-world.

Hinweis

  • Nach der Tokenisierung werden die Token unabhängig von der ursprünglichen Groß- und Kleinschreibung und in beliebiger Reihenfolge abgeglichen. Beispielsweise entspricht displayName Suchzeichenfolgen wie 李四(David Li), , 李四, DavidLi, David), (李四, , Li 李.李四(David Li)
  • Eine Änderung des Alphabets, z. B. von Lateinisch zu Kyrillisch oder Chinesisch, führt nicht zu einem neuen Token. Beispielsweise stimmt displayName 蓝色group mit den 蓝色group Suchzeichenfolgen und 蓝色 überein, aber nicht group; während displayName group蓝色 mit den group蓝色 Suchzeichenfolgen und group übereinstimmt, aber nicht 蓝色 oder .
  • Die Unterstützung für die tokenbasierte Suche funktioniert nur für die Felder displayName und description. Jedes Feld vom Typ String kann in $searcheingefügt werden. Andere Felder als displayName und description werden standardmäßig auf $filterstartswith Verhalten festgelegt. Beispiel:
GET https://graph.microsoft.com/v1.0/groups/?$search="displayName:OneVideo" OR "mail:onevideo"
ConsistencyLevel: eventual

Dadurch wird nach allen Gruppen mit Anzeigenamen gesucht, die onevideo über Token oder E-Mails verfügen, die mit onevideo beginnen.

$search kann auch zusammen mit $filter verwendet werden:

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

Damit wird nach allen E-Mail-aktivierten Gruppen gesucht, deren Anzeigename wie "OneVideo" aussieht. Die Ergebnisse werden basierend auf einer logischen Konjunktion (einem "UND") der $filter und der gesamten Abfrage in der $search eingeschränkt.

Die Syntax der Suche folgt diesen Regeln:

  • Generisches Format: $search="clause1" [AND | OR] "[clauseX]".
  • Eine beliebige Anzahl von Klauseln wird unterstützt. Klammern für die Rangfolge werden ebenfalls unterstützt.
  • Die Syntax für jede Klausel lautet: "<property>:<text to search>".
  • Der Eigenschaftenname muss in der Klausel angegeben werden. Jede Eigenschaft, die in $filter verwendet werden kann, kann auch innerhalb von $search verwendet werden. Je nach Eigenschaft ist das Suchverhalten entweder „search“ oder „startsWith“, wenn die Suche für die Eigenschaft nicht unterstützt wird.
  • Die gesamte Klausel muss in doppelten Anführungszeichen deklariert werden. Wenn sie doppelte Anführungszeichen oder umgekehrte Schrägstriche enthält, sollte sie mit einem umgekehrten Schrägstrich mit Escapezeichen versehen werden. Alle anderen Sonderzeichen müssen URL-codiert sein.
  • Logische AND- und OR-Operatoren müssen außerhalb doppelter Anführungszeichen platziert werden und müssen in Großbuchstaben vorliegen.

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"

Sowohl die in $search bereitgestellten Zeichenfolgeneingaben als auch die durchsuchbaren Eigenschaften werden durch Leerzeichen, unterschiedliche Groß- und Kleinschreibung und Zeichentypen (Zahlen und Sonderzeichen) aufgeteilt.