Sintaxis de $select de OData en Azure AI Search
En Azure AI Search, el parámetro $select especifica los campos que se deben incluir en los resultados de la búsqueda. En este artículo se describe la sintaxis de OData de $select y se proporcionan ejemplos.
La construcción y las constantes de las rutas de acceso de campo se describen en Introducción al lenguaje OData en Azure AI Search. Para obtener más información sobre la composición de los resultados de la búsqueda, consulta Cómo trabajar con los resultados de búsqueda en Azure AI Search.
Sintaxis
El parámetro $select determina qué campos de cada documento se devuelven en el conjunto de resultados de la consulta. La siguiente EBNF (notación de Backus-Naur extendida) define la gramática del parámetro $select:
select_expression ::= '*' | field_path(',' field_path)*
field_path ::= identifier('/'identifier)*
También está disponible un diagrama de sintaxis interactivo:
Nota:
Consulta Referencia de sintaxis de expresiones OData para Azure AI Search para obtener la EBNF completa.
El parámetro $select tiene dos formatos:
- Una sola estrella (
*
), que indica que se deben devolver todos los campos recuperables, o bien - Una lista separada por comas de las rutas de acceso de campo, para identificar qué campos se deben devolver.
Al usar el segundo formato, en la lista solo se pueden especificar campos recuperables.
Si se indica un campo complejo sin especificar sus subcampos de forma explícita, se incluyen todos los campos secundarios recuperables en el conjunto de resultados de la consulta. Por ejemplo, imagine que el índice tiene un campo Address
con los subcampos Street
, City
y Country
, todos ellos recuperables. Si especifica Address
en $select, se incluirán los tres subcampos en los resultados de la consulta.
Ejemplos
Incluir los campos de nivel superior HotelId
, HotelName
y Rating
en los resultados, junto con el subcampo City
de Address
:
$select=HotelId, HotelName, Rating, Address/City
Un resultado de ejemplo podría tener este aspecto:
{
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel",
"Rating": 4,
"Address": {
"City": "New York"
}
}
Incluir el campo de nivel superior HotelName
en los resultados. Incluir todos los subcampos de Address
. Incluir los subcampos Type
y BaseRate
de cada objeto de la colección Rooms
:
$select=HotelName, Address, Rooms/Type, Rooms/BaseRate
Un resultado de ejemplo podría tener este aspecto:
{
"HotelName": "Stay-Kay City Hotel",
"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
}
]
}