searchEntity: query
命名空间:microsoft.graph
重要
Microsoft Graph版本下的 /beta API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
运行指定的搜索查询。 响应中提供了搜索结果。
注意
Microsoft Search API 请求和响应中使用的资源已重命名或删除了属性或者已被弃用。 查找有关过时的更多详细信息。 相应更新任何早期应用中的搜索 API 查询。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
| 权限类型 |
权限(从最低特权到最高特权) |
| 委派(工作或学校帐户) |
Mail.Read、Calendars.Read、Files.Read.All、Sites.Read.All、ExternalItem.Read.All |
| 委派(个人 Microsoft 帐户) |
不支持。 |
| 应用程序 |
不支持。 |
HTTP 请求
POST /search/query
| 名称 |
说明 |
| Authorization |
Bearer {token}。必需。 |
| Content-type |
application/json. Required. |
请求正文
在请求正文中,提供具有以下参数的 JSON 对象。
| 参数 |
类型 |
说明 |
| requests |
searchRequest 集合 |
一个或多个搜索请求的集合,每个搜索请求的格式都为 JSON blob。 每个 JSON blob 都包含响应中预期的资源类型、基础源、分页参数、请求的字段和实际搜索查询。 请注意搜索 实体 类型的特定组合以及排序或聚合搜索结果的已知限制。 |
响应
如果成功,此方法在响应 HTTP 200 OK 正文中返回 响应代码和 searchResponse 对象集合。
示例
请求
下面展示了示例请求。
POST https://graph.microsoft.com/beta/search/query
Content-type: application/json
{
"requests": [
{
"entityTypes": [
"externalItem"
],
"contentSources": [
"/external/connections/connectionfriendlyname"
],
"query": {
"queryString": "contoso product"
},
"from": 0,
"size": 25,
"fields": [
"title",
"description"
]
}
]
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var requests = new List<SearchRequestObject>()
{
new SearchRequestObject
{
EntityTypes = new List<EntityType>()
{
EntityType.ExternalItem
},
ContentSources = new List<String>()
{
"/external/connections/connectionfriendlyname"
},
Query = new SearchQuery
{
QueryString = "contoso product"
},
From = 0,
Size = 25,
Fields = new List<String>()
{
"title",
"description"
}
}
};
await graphClient.Search
.Query(requests,null)
.Request()
.PostAsync();
const options = {
authProvider,
};
const client = Client.init(options);
const searchResponse = {
requests: [
{
entityTypes: [
'externalItem'
],
contentSources: [
'/external/connections/connectionfriendlyname'
],
query: {
queryString: 'contoso product'
},
from: 0,
size: 25,
fields: [
'title',
'description'
]
}
]
};
await client.api('/search/query')
.version('beta')
.post(searchResponse);
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/beta/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/search/query"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
NSMutableArray *requestsList = [[NSMutableArray alloc] init];
MSGraphSearchRequest *requests = [[MSGraphSearchRequest alloc] init];
NSMutableArray *entityTypesList = [[NSMutableArray alloc] init];
[entityTypesList addObject: @"externalItem"];
[requests setEntityTypes:entityTypesList];
NSMutableArray *contentSourcesList = [[NSMutableArray alloc] init];
[contentSourcesList addObject: @"/external/connections/connectionfriendlyname"];
[requests setContentSources:contentSourcesList];
MSGraphSearchQuery *query = [[MSGraphSearchQuery alloc] init];
[query setQueryString:@"contoso product"];
[requests setQuery:query];
[requests setFrom: 0];
[requests setSize: 25];
NSMutableArray *fieldsList = [[NSMutableArray alloc] init];
[fieldsList addObject: @"title"];
[fieldsList addObject: @"description"];
[requests setFields:fieldsList];
[requestsList addObject: requests];
payloadDictionary[@"requests"] = requestsList;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
LinkedList<SearchRequest> requestsList = new LinkedList<SearchRequest>();
SearchRequest requests = new SearchRequest();
LinkedList<EntityType> entityTypesList = new LinkedList<EntityType>();
entityTypesList.add(EntityType.EXTERNAL_ITEM);
requests.entityTypes = entityTypesList;
LinkedList<String> contentSourcesList = new LinkedList<String>();
contentSourcesList.add("/external/connections/connectionfriendlyname");
requests.contentSources = contentSourcesList;
SearchQuery query = new SearchQuery();
query.queryString = "contoso product";
requests.query = query;
requests.from = 0;
requests.size = 25;
LinkedList<String> fieldsList = new LinkedList<String>();
fieldsList.add("title");
fieldsList.add("description");
requests.fields = fieldsList;
requestsList.add(requests);
graphClient.search()
.query(SearchEntityQueryParameterSet
.newBuilder()
.withRequests(requestsList)
.withQueryAlterationOptions(null)
.build())
.buildRequest()
.post();
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewRequestsRequestBody()
requestBody.SetRequests( []SearchRequest {
msgraphsdk.NewSearchRequest(),
SetAdditionalData(map[string]interface{}{
"entityTypes": []String {
"externalItem",
}
"contentSources": []String {
"/external/connections/connectionfriendlyname",
}
"from": ,
"size": ,
"fields": []String {
"title",
"description",
}
}
}
result, err := graphClient.Search().Query().Post(requestBody)
Import-Module Microsoft.Graph.Search
$params = @{
Requests = @(
@{
EntityTypes = @(
"externalItem"
)
ContentSources = @(
"/external/connections/connectionfriendlyname"
)
Query = @{
QueryString = "contoso product"
}
From = 0
Size = 25
Fields = @(
"title"
"description"
)
}
)
}
Invoke-MgQuerySearch -BodyParameter $params
响应
下面展示了示例响应。
注意: 为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"searchTerms": [
"searchTerms-value"
],
"hitsContainers": [
{
"hits": [
{
"hitId": "1",
"rank": 1,
"summary": "_summary-value",
"resource": "The source field will contain the underlying graph entity part of the response"
}
],
"total": 47,
"moreResultsAvailable": true
}
]
}
]
}
另请参阅