Freigeben über


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. In diesem Artikel werden die Suchsyntax und das Suchverhalten in den folgenden drei Standard Bereichen beschrieben:

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 1.000 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

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 andernfalls. 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 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 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 sich auf die Eigenschaften displayName und emailAddresses der Person-Ressource anwenden$search. Die Anforderung gibt standardmäßig bis zu 250 Ergebnisse zurück.

Die folgende Anforderung sucht nach "Irene McGowan" in den Sammlungspersonenobjekten des angemeldeten Benutzers. Microsoft Graph bezieht sich auf die Eigenschaften displayName oder 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 Verzeichnisobjektsammlungen

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 im Zusammenhang mit $search on-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 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⁾ Bei unterschiedlichen Groß- und Kleinschreibungen funktioniert die Tokenisierung derzeit 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; z. B. suchen nach helloworld Suchen hello-world und hello.world.

Nach der Tokenisierung werden die Token unabhängig von der ursprünglichen Groß-/Kleinschreibung abgeglichen 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 Über - und video -Token verfügenone, oder nach E-Mails, die mit onevideobeginnen.

$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 ("AND") von $filter und der gesamten Abfrage im $searcheingeschrä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.
    • 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 True-Suche wird nur von den Eigenschaften displayName und description unterstützt. aber jede Eigenschaft, die in $filter verwendet werden kann, kann auch in $searchverwendet werden. Abhängig von der Eigenschaft ist das Suchverhalten entweder "search" oder $filter mit "startsWith", wenn die Suche für die Eigenschaft nicht unterstützt wird.
  • Sowohl die Zeichenfolgeneingaben, die Sie in $searchbereitstellen, 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"