Verwenden der Microsoft Search-API zum Durchsuchen von OneDrive- und SharePoint-Inhalten
Verwenden Sie die Microsoft Search-API in Microsoft Graph, um in OneDrive oder SharePoint gespeicherte Inhalte zu durchsuchen: Dateien, Ordner, Listen, Listenelemente oder Websites.
Achtung
Das Such-API-Schema wurde in der Betaversion geändert. Einige Eigenschaften in einer Suchanforderung und -antwort wurden umbenannt oder entfernt. Weitere Informationen finden Sie unter Warnung zur Einstellung der Schemaänderung. Die Beispiele in diesem Thema zeigen das aktuelle Schema.
Mit der Such-API können Sie die Inhaltstypen festlegen, die in OneDrive oder SharePoint abgerufen werden sollen, indem Sie die entityTypes-Eigenschaft in searchRequest angeben. In diesem Artikel werden einige Beispiele beschrieben.
Beispiel 1: Durchsuchen von Dateien
Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "contoso"
}
}
]
}
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "<c0>Contoso</c0> Detailed Design <ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0",
"driveId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b",
"sharepointIds": {
"listId": "c61d1892-ca82-4f53-b16f-6bb8a379e2b2",
"listItemId": "1027",
"listItemUniqueId": "E320AFEB-AD73-46A2-83D7-985FAA4B206D"
}
},
"fileSystemInfo": {
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z"
}
}
}
]
}
]
}
]
}
Beispiel 2: Durchsuchen von Listenelementen
Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "contoso"
}
}
]
}
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/Lists/Issue tracker list/DispForm.aspx?ID=1",
"sharepointIds": {
"listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
"listItemId": "13"
},
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"sharepointIds":{
"listId":"da61a2b0-4120-4a3f-812b-0fc0d79bf16b"
},
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
}
}
}
]
}
]
}
]
}
Beispiel 3: Durchsuchen von Websites
Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"site"
],
"query": {
"queryString": "contoso"
}
}
]
}
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.site",
"id": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"createdDateTime": "2019-06-10T06:37:43Z",
"description": "Contoso Communication Site",
"lastModifiedDateTime": "2020-08-30T06:41:56Z",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/"
}
}
]
}
]
}
]
}
Beispiel 4: Durchsuchen aller Inhalte in OneDrive und SharePoint
In diesem Beispiel werden alle Inhalte auf OneDrive- und SharePoint-Websites abgefragt, auf die der angemeldete Benutzer Lesezugriff hat. Die Ressourceneigenschaft in der Antwort gibt Übereinstimmungen zurück, die Dateien und Ordner als driveItem-Objekte sind, Übereinstimmungen, die Container (SharePoint-Listen) als Liste und alle anderen Übereinstimmungen als listItem sind.
Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem", "listItem", "list"
],
"query": {
"queryString": "contoso"
}
}
]
}
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"@odata.type": "#microsoft.graph.searchHitsContainer",
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "<c0>Contoso</c0> Detailed Design <ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0",
"driveId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b",
"sharepointIds": {
"listId": "c61d1892-ca82-4f53-b16f-6bb8a379e2b2",
"listItemId": "1027",
"listItemUniqueId": "E320AFEB-AD73-46A2-83D7-985FAA4B206D"
}
},
"fileSystemInfo": {
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z"
}
}
},
{
"@odata.type": "#microsoft.graph.searchHit",
"hitId": "51eef59e-5d49-4d28-96f0-864cf90765e0",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.list",
"displayName": "Contoso - Documents",
"id": "51eef59e-5d49-4d28-96f0-864cf90765e0",
"description": "",
"lastModifiedDateTime": "2020-07-08T18:17:59+00:00",
"name": "Shared Documents",
"parentReference": {
"siteId": "microsoft.sharepoint-df.com,220fd155-0ea2-477c-a816-5c08fdc45f5d,fad16ab6-0736-4fbc-a053-087296b47c99"
},
"webUrl": "https://microsoft.sharepoint-df.com/teams/spoppe/collab/TaskBoard/Contoso/Shared Documents/Forms/AllItems.aspx"
}
}
]
}
]
}
]
}
Beispiel 5: Verwenden von Filtern in Suchabfragen
Sie können KQL in Suchbegriffen von Abfragen für OneDrive und SharePoint verwenden. Beispiel:
-
"query": "contoso filetype:docx OR filetype:doc"
bezieht die Abfrage auf Word-Dokumente ein. -
"query": "test path:\"https://contoso.sharepoint.com/sites/Team Site/Documents/Project\""
bezieht die Abfrage auf einen bestimmten Ordner innerhalb einer Website ein. -
"query": "contoso AND isDocument=true"
definiert die Abfrage so, dass nur Dokumente zurückgegeben werden. Container (Ordner, Dokumentbibliothek) werden nicht zurückgegeben. -
"query": "contoso contentclass:STS_List_Events"
bezieht die Abfrage auf Kalenderereignisse ein, die in SharePoint gespeichert sind. -
"query": "contoso (LastModifiedTime > 2021-02-01 AND Created > 2021-02-01)"
bezieht sich auf die Abfrage, um SharePoint- und OneDrive-Elemente nach Datum zu filtern.
Um gültig zu sein, sollte die Eigenschaftseinschränkung einen gültigen, abfragbaren namen der verwalteten Eigenschaft in der Bedingung angeben.
Beispiel 6: Angeben von Select-Eigenschaften
Sie können die Felder, die Sie in der Antwort zurückgeben möchten, als Teil der Fields-Untereigenschaft in listItem oder als interne listItem-Untereigenschaft in driveItem eines searchHit-Objekts in der Antwort angeben. Dies ist eine Möglichkeit, die Antwort entweder über das Netzwerk zu kürzen oder bestimmte Eigenschaften anzufordern, die nicht Teil des standardmäßigen Schemas sind.
Beachten Sie, dass die Eigenschaftenauswahl für benutzerdefinierte Eigenschaften in SharePoint nur für listItem oder driveItem verfügbar ist, da dies die einzigen beiden SharePoint-Entitäten in Microsoft Graph sind, die benutzerdefinierte Eigenschaften unterstützen.
listItem-Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "contoso"
},
"fields": [
"title",
"contentclass"
]
}
]
}
listItem-Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"sharepointIds": {
"listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
"listItemId": "13"
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
},
"fields": {
"contentclass": "STS_ListItem_GenericList",
"title": "Contoso issue "
}
}
}
]
}
]
}
]
}
driveItem-Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "contoso"
},
"fields": [
"listId",
"author",
"title"
]
}
]
}
driveItem-Antwort
POST /search/query
Content-Type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "01YOWRGSD34TVVP25X7NAZAW3P2JRL7FWE",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"listItem": {
"@odata.type": "#microsoft.graph.listItem",
"fields": {
"listId": "3b6a49d3-6bea-4549-bed8-8b1c92a12345",
"author": "Robin",
"title": "Test Notebook"
},
"id": "57ebe47b-b7eb-41fb-905b-123452bf96c4"
}
}
}
],
"total": 371,
"moreResultsAvailable": true
}
]
}
],
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)"
}
Beispiel 7: Suchen nach ausgeblendeten Inhalten
Verwenden Sie die includeHiddenContent-Eigenschaft , um ausgeblendete Inhalte, z. B. archivierte Inhalte und SharePoint Embedded, in Suchergebnisse einzuschließen. Standardmäßig ist diese Eigenschaft auf false
festgelegt, wodurch verhindert wird, dass ausgeblendete Inhalte zurückgegeben werden.
Sie können auch optional KQL einschließen, um Ihre Abfrage für ausgeblendete Inhalte auf bestimmte Inhaltstypen einzuschließen. In SharePoint können Administratoren beispielsweise Websites als archiviert markieren. Wenn ausgeblendete Inhalte nicht verfügbar sind, enthalten die Suchergebnisse nur relevante, nicht eingeblendete Inhalte, sofern keine anderen Fehler vorliegen, und geben einen 200 OK
Antwortcode zurück.
Im folgenden Beispiel wird gezeigt, wie Sie die queryTemplate verwenden, um die Abfrage auf KQL und die includeHiddenContent-Eigenschaft einzuschließen, um ausgeblendete Inhalte einzuschließen. Sie können Abfragen für SharePoint Embedded-Inhalte auch mithilfe von Eigenschaften wie ContainerTypeId festlegen. Weitere Informationen zu Containertypen in SharePoint Embedded finden Sie unter SharePoint Embedded Container Types.For more information about container types in SharePoint Embedded, see SharePoint Embedded Container Types.
Anforderung
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "*",
"queryTemplate": "({searchTerms} AuthorOWSUSER:TestContoso)"
},
"sharePointOneDriveOptions": {
"includeHiddenContent": true
}
}
]
}
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "fc78bcb9-8b26-4bba-a250-389def493e0f",
"rank": 2,
"summary": "<c0>STS</c0>_<c0>View</c0> <c0>MySiteDocumentLibrary</c0> <c0>domain</c0>_<c0>allow</c0>:<c0>ALL</c0><ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.list",
"displayName": "TestContoso - Documents",
"id": "fc78bcb9-8b26-4bba-a250-389def493e0f",
"createdBy": {
"user": {
"displayName": "System Account"
}
},
"lastModifiedDateTime": "2024-03-08T18:06:33Z",
"name": "Documents",
"parentReference": {
"siteId": "contoso-my.sharepoint.com,44776ebc-4ddc-4f7e-afb8-b706c77e0883,a118ff93-1105-40b9-bed0-2cd07cd4b2a4"
},
"webUrl": "https://contoso-my.sharepoint.com/personal/contoso_onmicrosoft_com/Documents/Forms/All.aspx"
}
}
],
"total": 1,
"moreResultsAvailable": false
}
]
}
],
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)"
}
Bekannte Einschränkungen
Bei der Suche nach Laufwerk müssen Sie in queryString einen Begriff einschließen, der im Namen der Dokumentbibliothek enthalten ist.
*
Abfragen werden nicht unterstützt und geben nicht alle verfügbaren Laufwerke zurück.Die Such-API unterstützt das Suchschema auf Websiteebene nicht. Verwenden Sie das Suchschema auf Mandantenebene oder das Standardschema.
Die includeHiddenContent-Eigenschaft funktioniert nur in Szenarien mit delegierten Berechtigungen. Dies gilt nicht für Anwendungsberechtigungen, bei denen die includeHiddenContent-Eigenschaft automatisch auf
false
festgelegt wird.