Syntaxis van OData $select in Azure Cognitive Search
In Azure Cognitive Search geeft de parameter $select aan welke velden moeten worden opgenomen in zoekresultaten. In dit artikel wordt de OData-syntaxis van $select beschreven en vindt u voorbeelden.
De opbouw van veldpaden en constanten worden beschreven in het overzicht van de OData-taal in Azure Cognitive Search. Zie Werken met zoekresultaten in Azure Cognitive Search voor meer informatie over het samenstellen van zoekresultaten.
Syntax
De parameter $select bepaalt welke velden voor elk document worden geretourneerd in de queryresultatenset. De volgende EBNF (Extended Backus-Naur Form) definieert de grammatica voor de parameter $select :
select_expression ::= '*' | field_path(',' field_path)*
field_path ::= identifier('/'identifier)*
Er is ook een interactief syntaxisdiagram beschikbaar:
Notitie
Zie Naslaginformatie over de syntaxis van OData-expressies voor Azure Cognitive Search voor de volledige EBNF.
De parameter $select heeft twee vormen:
- Een enkele ster (
*
), die aangeeft dat alle velden die kunnen worden opgehaald, moeten worden geretourneerd, of - Een door komma's gescheiden lijst met veldpaden, waarmee wordt opgegeven welke velden moeten worden geretourneerd.
Wanneer u het tweede formulier gebruikt, kunt u alleen opvraagbare velden opgeven in de lijst.
Als u een complex veld weergeeft zonder expliciet de subvelden op te geven, worden alle ophaalbare subvelden opgenomen in de queryresultatenset. Stel dat uw index een Address
veld heeft met Street
, City
en Country
subvelden die allemaal kunnen worden opgehaald. Als u opgeeft Address
in $select, bevatten de queryresultaten alle drie de subvelden.
Voorbeelden
Neem de HotelId
velden , HotelName
en het Rating
hoogste niveau op in de resultaten en neem het City
subveld op van Address
:
$select=HotelId, HotelName, Rating, Address/City
Een voorbeeldresultaat kan er als volgt uitzien:
{
"HotelId": "1",
"HotelName": "Secret Point Motel",
"Rating": 4,
"Address": {
"City": "New York"
}
}
Neem het veld op het HotelName
hoogste niveau op in de resultaten. Neem alle subvelden van Address
op . Neem de Type
subvelden en BaseRate
van elk object op in de Rooms
verzameling:
$select=HotelName, Address, Rooms/Type, Rooms/BaseRate
Een voorbeeldresultaat kan er als volgt uitzien:
{
"HotelName": "Secret Point Motel",
"Rating": 4,
"Address": {
"StreetAddress": "677 5th Ave",
"City": "New York",
"StateProvince": "NY",
"Country": "USA",
"PostalCode": "10022"
},
"Rooms": [
{
"Type": "Budget Room",
"BaseRate": 9.69
},
{
"Type": "Budget Room",
"BaseRate": 8.09
}
]
}