SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Tutorial #1: Crea un índice de Azure Cognitive Search en Python
utilizando Jupyter Notebooks
En este primer tutorial se explica cómo crear, cargar y consultar un índice de Azure Cognitive
Search mediante Python y las API REST del servicio cognitivo. La ejecución es en un ambiente
Anaconda 3.x, pero de forma alternativa puedes utilizar Azure Jupyter Notebooks, un servicio
gratuito para ejecución de scripts de Python en la nube.
NOTA: Este taller está basado en el tutorial localizado en la documentación oficial.
Pre-requisitos:
 Anaconda 3.x, el cual contiene Python 3.x e instancias de Jupyter Notebook
 O también puedes utilizar el servicio de Azure Jupyter Notebooks.
 Un recurso de Azure Cognitive Search.
Paso 1. Creación del recurso de Azure Cognitive Search
a) Accede al portal de Azure (https://portal.azure.com) y busca el recurso Azure Cognitive
Search:
b) Da clic en el botón Create.
c) Llena los datos solicitados y da clic en Review + create:
 Grupo de recursos: taller2-rg (nuevo)
 URL: Debe ser un nombre único/universal
 Ubicación: West US 2
 Esquema de precio: Gratuito
d) Da clic en Create.
e) Una vez generado el recurso, accede a él (desde las notificaciones o localízalo en tu
suscripción)
f) En la sección Keys, copia la llave que aparece en debajo de Primary admin key.
g) También toma nota del nombre de tu recurso (taller-search-lb en este caso).
Paso 2. Creación del proyecto de Azure Notebooks.
a) Ingresa a Azure Notebooks (https://notebooks.azure.com)
b) Da clic en My Projects y da clic en New Project.
c) El nombre del proyecto es Taller-IA02. Llena el resto de los datos solicitados de la
siguiente manera:
d) Da clic en el botón + y selecciona Notebook:
e) El nombre del cuaderno de trabajo es search-demo.ipynb,yellenguaje es Python3.5. Da
clic en New.
Paso 3. Creación del índice:
a) Preparación
A continuación, veamos el código para crear un índice de búsqueda y filtrar información. En la
primer celda carga las bibliotecas para trabajar con JSON y formular las solicitudes HTTP:
import json
import requests
from pprint import pprint
En la segunda celda, introduce los elementos de solicitud que serán constantes en cada solicitud.
Reemplaza el nombre del servicio de búsqueda (YOUR-SEARCH-SERVICE-NAME) y la clave de API
de administración (YOUR-ADMIN-API-KEY) por los valores obtenidos al crear el recurso de Azure
Cognitive Search.
endpoint = 'https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/'
api_version = '?api-version=2019-05-06'
headers = {'Content-Type': 'application/json',
'api-key': '<YOUR-ADMIN-API-KEY>' }
En la tercera celda, realiza la petición http de tipo GET que tiene como objetivo la colección de
índices del servicio de búsqueda y selecciona la propiedad de nombre de los índices existentes.
url = endpoint + "indexes" + api_version + "&$select=name"
response = requests.get(url, headers=headers)
index_list = response.json()
pprint(index_list)
Ejecuta estas 3 celdas:
b) Creación del índice
Los elementos necesarios de un índice incluyen un nombre, una colección de campos y una clave.
La colección de campos define la estructura de un documento. Cada campo tiene nombre, tipo y
atributos que determinan cómo se usa el campo (por ejemplo, si es texto completo que se puede
buscar, filtrar o recuperar en los resultados de búsqueda). Dentro de un índice, uno de los campos
de tipo Edm.String se debe designar como la clave para la identidad del documento.
Este índice se denomina "hotels-quickstart" y tiene las definiciones de campo que aparecen a
continuación. Pega el siguiente código en una celda para proporcionar el esquema.
index_schema = {
"name": "hotels-quickstart",
"fields": [
{"name": "HotelId", "type": "Edm.String", "key": "true", "filterable":
"true"},
{"name": "HotelName", "type": "Edm.String", "searchable": "true",
"filterable": "false", "sortable": "true", "facetable": "false"},
{"name": "Description", "type": "Edm.String", "searchable": "true",
"filterable": "false", "sortable": "false", "facetable": "false", "analyzer":
"en.lucene"},
{"name": "Description_fr", "type": "Edm.String", "searchable": "true",
"filterable": "false", "sortable": "false", "facetable": "false", "analyzer":
"fr.lucene"},
{"name": "Category", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Tags", "type": "Collection(Edm.String)", "searchable": "true",
"filterable": "true", "sortable": "false", "facetable": "true"},
{"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": "true",
"sortable": "true", "facetable": "true"},
{"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable":
"true", "sortable": "true", "facetable": "true"},
{"name": "Rating", "type": "Edm.Double", "filterable": "true", "sortable":
"true", "facetable": "true"},
{"name": "Address", "type": "Edm.ComplexType",
"fields": [
{"name": "StreetAddress", "type": "Edm.String", "filterable": "false",
"sortable": "false", "facetable": "false", "searchable": "true"},
{"name": "City", "type": "Edm.String", "searchable": "true", "filterable":
"true", "sortable": "true", "facetable": "true"},
{"name": "StateProvince", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "PostalCode", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Country", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"}
]
}
]
}
En otra celda,realiza lasolicitudhttp de tipo POST que tiene como objetivo lacolección de índices
del servicio de búsqueda y crea un índice en función del esquema de índice proporcionado en la
celda anterior.
url = endpoint + "indexes" + api_version
response = requests.post(url, headers=headers, json=index_schema)
index = response.json()
pprint(index)
Ejecuta estas dos celdas:
c) Carga de documentos:
Para insertar documentos, usa una solicitud HTTP POST al punto de conexión de la dirección URL
del índice.
En una celda nueva, proporciona 4 documentos que se ajustan al esquema de índice. Especifica
una acción de carga para cada documento.
documents = {
"value": [
{
"@search.action": "upload",
"HotelId": "1",
"HotelName": "Secret Point Motel",
"Description": "The hotel is ideally located on the main commercial artery of
the city in the heart of New York. A few minutes away is Time's Square and the
historic centre of the city, as well as other places of interest that make New
York one of America's most attractive and cosmopolitan cities.",
"Description_fr": "L'hôtel est idéalement situé sur la principale artère
commerciale de la ville en plein cœur de New York. A quelques minutes se trouve
la place du temps et le centre historique de la ville, ainsi que d'autres lieux
d'intérêt qui font de New York l'une des villes les plus attractives et
cosmopolites de l'Amérique.",
"Category": "Boutique",
"Tags": [ "pool", "air conditioning", "concierge" ],
"ParkingIncluded": "false",
"LastRenovationDate": "1970-01-18T00:00:00Z",
"Rating": 3.60,
"Address": {
"StreetAddress": "677 5th Ave",
"City": "New York",
"StateProvince": "NY",
"PostalCode": "10022",
"Country": "USA"
}
},
{
"@search.action": "upload",
"HotelId": "2",
"HotelName": "Twin Dome Motel",
"Description": "The hotel is situated in a nineteenth century plaza, which
has been expanded and renovated to the highest architectural standards to create
a modern, functional and first-class hotel in which art and unique historical
elements coexist with the most modern comforts.",
"Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été
agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel
moderne, fonctionnel et de première classe dans lequel l'art et les éléments
historiques uniques coexistent avec le confort le plus moderne.",
"Category": "Boutique",
"Tags": [ "pool", "free wifi", "concierge" ],
"ParkingIncluded": "false",
"LastRenovationDate": "1979-02-18T00:00:00Z",
"Rating": 3.60,
"Address": {
"StreetAddress": "140 University Town Center Dr",
"City": "Sarasota",
"StateProvince": "FL",
"PostalCode": "34243",
"Country": "USA"
}
},
{
"@search.action": "upload",
"HotelId": "3",
"HotelName": "Triple Landscape Hotel",
"Description": "The Hotel stands out for its gastronomic excellence under the
management of William Dough, who advises on and oversees all of the Hotel's
restaurant services.",
"Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été
agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel
moderne, fonctionnel et de première classe dans lequel l'art et les éléments
historiques uniques coexistent avec le confort le plus moderne.",
"Category": "Resort and Spa",
"Tags": [ "air conditioning", "bar", "continental breakfast" ],
"ParkingIncluded": "true",
"LastRenovationDate": "2015-09-20T00:00:00Z",
"Rating": 4.80,
"Address": {
"StreetAddress": "3393 Peachtree Rd",
"City": "Atlanta",
"StateProvince": "GA",
"PostalCode": "30326",
"Country": "USA"
}
},
{
"@search.action": "upload",
"HotelId": "4",
"HotelName": "Sublime Cliff Hotel",
"Description": "Sublime Cliff Hotel is located in the heart of the historic
center of Sublime in an extremely vibrant and lively area within short walking
distance to the sites and landmarks of the city and is surrounded by the
extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff
is part of a lovingly restored 1800 palace.",
"Description_fr": "Le sublime Cliff Hotel est situé au coeur du centre
historique de sublime dans un quartier extrêmement animé et vivant, à courte
distance de marche des sites et monuments de la ville et est entouré par
l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments.
Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.",
"Category": "Boutique",
"Tags": [ "concierge", "view", "24-hour front desk service" ],
"ParkingIncluded": "true",
"LastRenovationDate": "1960-02-06T00:00:00Z",
"Rating": 4.60,
"Address": {
"StreetAddress": "7400 San Pedro Ave",
"City": "San Antonio",
"StateProvince": "TX",
"PostalCode": "78216",
"Country": "USA"
}
}
]
}
En otra celda, realiza la solicitud http POST que tiene como destino la colección de documentos
del índice hotels-quickstart y envía los documentos proporcionados en el paso anterior.
url = endpoint + "indexes/hotels-quickstart/docs/index" + api_version
response = requests.post(url, headers=headers, json=documents)
index_content = response.json()
pprint(index_content)
Ejecuta ambas celdas:
d) Búsqueda en índices:
Este paso muestra cómo realizar consultas en un índice con la API de REST de Azure Cognitive
Search.
En una celda, proporciona una expresión de consulta que ejecute una búsqueda vacía
(búsqueda=*), la cual devuelve una lista no clasificada (puntuación de búsqueda=1,0) de
documentos arbitrarios. De forma predeterminada, Azure Cognitive Search devuelve 50
resultados cada vez.
Al ser estructurada, esta consulta devuelve la estructura y los valores del documento entero.
Agrega $count=true para obtener un recuento de todos los documentos de los resultados.
searchstring = '&search=*&$count=true'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Ejecuta y observa los resultados:
En una celda nueva, proporciona el código siguiente para buscar los términos "hoteles" y "wifi".
Agrega $select para especificar qué campos quiere incluir en los resultados de búsqueda.
searchstring = '&search=hotels wifi&$count=true&$select=HotelId,HotelName'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Si ejecutas la celda, el resultado se muestra a continuación:
A continuación, aplica una expresión $filter que seleccione solo aquellos hoteles con una
clasificación superior a 4.
searchstring = '&search=*&$filter=Rating gt
4&$select=HotelId,HotelName,Description,Rating'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Ejecuta y observa el resultado:
De forma predeterminada, el motor de búsqueda devuelve los 50 documentos más importantes,
pero puedes usar las subcláusulas TOP y SKIP para agregar paginación y elegir el número de
documentos en cada resultado. Esta consulta devuelve dos documentos en cada conjunto de
resultados.
searchstring = '&search=boutique&$top=2&$select=HotelId,HotelName,Description'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Ejecuta la celda para comprobar:
En este último ejemplo, use $orderby para ordenar los resultados por ciudad. En este ejemplo se
incluyen los campos de la colección de direcciones.
searchstring = '&search=pool&$orderby=Address/City&$select=HotelId, HotelName,
Address/City, Address/StateProvince'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
e) Limpieza
Si has completado todo lo necesario para crear el índice, puedes eliminarlo con las siguientes
líneas de código:
url = endpoint + "indexes/hotels-quickstart" + api_version
response = requests.delete(url, headers=headers)
Eliminar índices innecesarios libera espacio. Confirma el borrado del índice ejecutando el
siguiente script que lista todos los índices en tu servicio de búsqueda. Si hotels-quickstart no está
listado, has eliminado exitosamente el índice creado en este tutorial.
url = endpoint + "indexes" + api_version + "&$select=name"
response = requests.get(url, headers=headers)
index_list = response.json()
pprint(index_list)
Ejecuta ambas celdas y observa el resultado:

Weitere ähnliche Inhalte

Ähnlich wie Azure Cognitive Search Python tutorial

Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...INACAP
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTBEEVA_es
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDBSoftware Guru
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDBAlejandro Mancilla
 
Original Hacker 5
Original Hacker 5Original Hacker 5
Original Hacker 5Huehue 1
 
Informe_Base de datos
Informe_Base de datos Informe_Base de datos
Informe_Base de datos Rita Aguilar
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHAlejandro Esquiva Rodriguez
 
Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)PrimalMandingo
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico25415252
 
Slides trabajocolaborativo1
Slides trabajocolaborativo1Slides trabajocolaborativo1
Slides trabajocolaborativo1Daniel
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdffgu
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdffgu
 
Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bdJulio Pari
 
Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015Alba Azcona Rivas
 

Ähnlich wie Azure Cognitive Search Python tutorial (20)

Laboratorio de XML en DB2
Laboratorio de XML en DB2Laboratorio de XML en DB2
Laboratorio de XML en DB2
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDB
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
Original Hacker 5
Original Hacker 5Original Hacker 5
Original Hacker 5
 
Informe_Base de datos
Informe_Base de datos Informe_Base de datos
Informe_Base de datos
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Taller mongodb
Taller mongodbTaller mongodb
Taller mongodb
 
Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
 
Slides trabajocolaborativo1
Slides trabajocolaborativo1Slides trabajocolaborativo1
Slides trabajocolaborativo1
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdf
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdf
 
Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
 
Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015
 
Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
 

Mehr von Luis Beltran

AI for Accessibility.pptx
AI for Accessibility.pptxAI for Accessibility.pptx
AI for Accessibility.pptxLuis Beltran
 
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptxNET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptxLuis Beltran
 
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptxLuis Beltran
 
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...Luis Beltran
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfLuis Beltran
 
Computo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxComputo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxLuis Beltran
 
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptxLuis Beltran
 
ACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxLuis Beltran
 
UNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxUNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxLuis Beltran
 
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Luis Beltran
 
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLatino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLuis Beltran
 
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxNOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxLuis Beltran
 
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Luis Beltran
 
ATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxLuis Beltran
 
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Luis Beltran
 
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Luis Beltran
 
Real NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxReal NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxLuis Beltran
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxLuis Beltran
 
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...Luis Beltran
 
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLatam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLuis Beltran
 

Mehr von Luis Beltran (20)

AI for Accessibility.pptx
AI for Accessibility.pptxAI for Accessibility.pptx
AI for Accessibility.pptx
 
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptxNET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
 
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
 
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
 
Computo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxComputo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptx
 
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
 
ACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptx
 
UNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxUNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptx
 
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
 
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLatino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
 
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxNOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
 
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
 
ATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptx
 
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
 
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
 
Real NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxReal NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptx
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
 
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
 
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLatam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
 

Kürzlich hochgeladen

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Kürzlich hochgeladen (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Azure Cognitive Search Python tutorial

  • 1. Tutorial #1: Crea un índice de Azure Cognitive Search en Python utilizando Jupyter Notebooks En este primer tutorial se explica cómo crear, cargar y consultar un índice de Azure Cognitive Search mediante Python y las API REST del servicio cognitivo. La ejecución es en un ambiente Anaconda 3.x, pero de forma alternativa puedes utilizar Azure Jupyter Notebooks, un servicio gratuito para ejecución de scripts de Python en la nube. NOTA: Este taller está basado en el tutorial localizado en la documentación oficial. Pre-requisitos:  Anaconda 3.x, el cual contiene Python 3.x e instancias de Jupyter Notebook  O también puedes utilizar el servicio de Azure Jupyter Notebooks.  Un recurso de Azure Cognitive Search.
  • 2. Paso 1. Creación del recurso de Azure Cognitive Search a) Accede al portal de Azure (https://portal.azure.com) y busca el recurso Azure Cognitive Search: b) Da clic en el botón Create.
  • 3. c) Llena los datos solicitados y da clic en Review + create:  Grupo de recursos: taller2-rg (nuevo)  URL: Debe ser un nombre único/universal  Ubicación: West US 2  Esquema de precio: Gratuito
  • 4. d) Da clic en Create. e) Una vez generado el recurso, accede a él (desde las notificaciones o localízalo en tu suscripción)
  • 5. f) En la sección Keys, copia la llave que aparece en debajo de Primary admin key. g) También toma nota del nombre de tu recurso (taller-search-lb en este caso).
  • 6. Paso 2. Creación del proyecto de Azure Notebooks. a) Ingresa a Azure Notebooks (https://notebooks.azure.com) b) Da clic en My Projects y da clic en New Project.
  • 7. c) El nombre del proyecto es Taller-IA02. Llena el resto de los datos solicitados de la siguiente manera: d) Da clic en el botón + y selecciona Notebook:
  • 8. e) El nombre del cuaderno de trabajo es search-demo.ipynb,yellenguaje es Python3.5. Da clic en New.
  • 9. Paso 3. Creación del índice: a) Preparación A continuación, veamos el código para crear un índice de búsqueda y filtrar información. En la primer celda carga las bibliotecas para trabajar con JSON y formular las solicitudes HTTP: import json import requests from pprint import pprint En la segunda celda, introduce los elementos de solicitud que serán constantes en cada solicitud. Reemplaza el nombre del servicio de búsqueda (YOUR-SEARCH-SERVICE-NAME) y la clave de API de administración (YOUR-ADMIN-API-KEY) por los valores obtenidos al crear el recurso de Azure Cognitive Search. endpoint = 'https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/' api_version = '?api-version=2019-05-06' headers = {'Content-Type': 'application/json', 'api-key': '<YOUR-ADMIN-API-KEY>' } En la tercera celda, realiza la petición http de tipo GET que tiene como objetivo la colección de índices del servicio de búsqueda y selecciona la propiedad de nombre de los índices existentes. url = endpoint + "indexes" + api_version + "&$select=name" response = requests.get(url, headers=headers) index_list = response.json() pprint(index_list) Ejecuta estas 3 celdas:
  • 10. b) Creación del índice Los elementos necesarios de un índice incluyen un nombre, una colección de campos y una clave. La colección de campos define la estructura de un documento. Cada campo tiene nombre, tipo y atributos que determinan cómo se usa el campo (por ejemplo, si es texto completo que se puede buscar, filtrar o recuperar en los resultados de búsqueda). Dentro de un índice, uno de los campos de tipo Edm.String se debe designar como la clave para la identidad del documento. Este índice se denomina "hotels-quickstart" y tiene las definiciones de campo que aparecen a continuación. Pega el siguiente código en una celda para proporcionar el esquema. index_schema = { "name": "hotels-quickstart", "fields": [ {"name": "HotelId", "type": "Edm.String", "key": "true", "filterable": "true"}, {"name": "HotelName", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "true", "facetable": "false"}, {"name": "Description", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "en.lucene"}, {"name": "Description_fr", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "fr.lucene"}, {"name": "Category", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Tags", "type": "Collection(Edm.String)", "searchable": "true", "filterable": "true", "sortable": "false", "facetable": "true"}, {"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Rating", "type": "Edm.Double", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Address", "type": "Edm.ComplexType", "fields": [ {"name": "StreetAddress", "type": "Edm.String", "filterable": "false", "sortable": "false", "facetable": "false", "searchable": "true"}, {"name": "City", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "StateProvince", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "PostalCode", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Country", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"} ] } ] }
  • 11. En otra celda,realiza lasolicitudhttp de tipo POST que tiene como objetivo lacolección de índices del servicio de búsqueda y crea un índice en función del esquema de índice proporcionado en la celda anterior. url = endpoint + "indexes" + api_version response = requests.post(url, headers=headers, json=index_schema) index = response.json() pprint(index) Ejecuta estas dos celdas:
  • 12. c) Carga de documentos: Para insertar documentos, usa una solicitud HTTP POST al punto de conexión de la dirección URL del índice. En una celda nueva, proporciona 4 documentos que se ajustan al esquema de índice. Especifica una acción de carga para cada documento. documents = { "value": [ { "@search.action": "upload", "HotelId": "1", "HotelName": "Secret Point Motel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Description_fr": "L'hôtel est idéalement situé sur la principale artère commerciale de la ville en plein cœur de New York. A quelques minutes se trouve la place du temps et le centre historique de la ville, ainsi que d'autres lieux d'intérêt qui font de New York l'une des villes les plus attractives et cosmopolites de l'Amérique.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ], "ParkingIncluded": "false", "LastRenovationDate": "1970-01-18T00:00:00Z", "Rating": 3.60, "Address": { "StreetAddress": "677 5th Ave", "City": "New York", "StateProvince": "NY", "PostalCode": "10022", "Country": "USA" } }, { "@search.action": "upload", "HotelId": "2", "HotelName": "Twin Dome Motel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", "Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge" ], "ParkingIncluded": "false",
  • 13. "LastRenovationDate": "1979-02-18T00:00:00Z", "Rating": 3.60, "Address": { "StreetAddress": "140 University Town Center Dr", "City": "Sarasota", "StateProvince": "FL", "PostalCode": "34243", "Country": "USA" } }, { "@search.action": "upload", "HotelId": "3", "HotelName": "Triple Landscape Hotel", "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.", "Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", "Category": "Resort and Spa", "Tags": [ "air conditioning", "bar", "continental breakfast" ], "ParkingIncluded": "true", "LastRenovationDate": "2015-09-20T00:00:00Z", "Rating": 4.80, "Address": { "StreetAddress": "3393 Peachtree Rd", "City": "Atlanta", "StateProvince": "GA", "PostalCode": "30326", "Country": "USA" } }, { "@search.action": "upload", "HotelId": "4", "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", "Description_fr": "Le sublime Cliff Hotel est situé au coeur du centre historique de sublime dans un quartier extrêmement animé et vivant, à courte distance de marche des sites et monuments de la ville et est entouré par l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments. Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.", "Category": "Boutique", "Tags": [ "concierge", "view", "24-hour front desk service" ], "ParkingIncluded": "true", "LastRenovationDate": "1960-02-06T00:00:00Z",
  • 14. "Rating": 4.60, "Address": { "StreetAddress": "7400 San Pedro Ave", "City": "San Antonio", "StateProvince": "TX", "PostalCode": "78216", "Country": "USA" } } ] } En otra celda, realiza la solicitud http POST que tiene como destino la colección de documentos del índice hotels-quickstart y envía los documentos proporcionados en el paso anterior. url = endpoint + "indexes/hotels-quickstart/docs/index" + api_version response = requests.post(url, headers=headers, json=documents) index_content = response.json() pprint(index_content) Ejecuta ambas celdas:
  • 15.
  • 16. d) Búsqueda en índices: Este paso muestra cómo realizar consultas en un índice con la API de REST de Azure Cognitive Search. En una celda, proporciona una expresión de consulta que ejecute una búsqueda vacía (búsqueda=*), la cual devuelve una lista no clasificada (puntuación de búsqueda=1,0) de documentos arbitrarios. De forma predeterminada, Azure Cognitive Search devuelve 50 resultados cada vez. Al ser estructurada, esta consulta devuelve la estructura y los valores del documento entero. Agrega $count=true para obtener un recuento de todos los documentos de los resultados. searchstring = '&search=*&$count=true' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Ejecuta y observa los resultados:
  • 17. En una celda nueva, proporciona el código siguiente para buscar los términos "hoteles" y "wifi". Agrega $select para especificar qué campos quiere incluir en los resultados de búsqueda. searchstring = '&search=hotels wifi&$count=true&$select=HotelId,HotelName' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Si ejecutas la celda, el resultado se muestra a continuación:
  • 18. A continuación, aplica una expresión $filter que seleccione solo aquellos hoteles con una clasificación superior a 4. searchstring = '&search=*&$filter=Rating gt 4&$select=HotelId,HotelName,Description,Rating' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Ejecuta y observa el resultado:
  • 19. De forma predeterminada, el motor de búsqueda devuelve los 50 documentos más importantes, pero puedes usar las subcláusulas TOP y SKIP para agregar paginación y elegir el número de documentos en cada resultado. Esta consulta devuelve dos documentos en cada conjunto de resultados. searchstring = '&search=boutique&$top=2&$select=HotelId,HotelName,Description' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Ejecuta la celda para comprobar:
  • 20. En este último ejemplo, use $orderby para ordenar los resultados por ciudad. En este ejemplo se incluyen los campos de la colección de direcciones. searchstring = '&search=pool&$orderby=Address/City&$select=HotelId, HotelName, Address/City, Address/StateProvince' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query)
  • 21. e) Limpieza Si has completado todo lo necesario para crear el índice, puedes eliminarlo con las siguientes líneas de código: url = endpoint + "indexes/hotels-quickstart" + api_version response = requests.delete(url, headers=headers) Eliminar índices innecesarios libera espacio. Confirma el borrado del índice ejecutando el siguiente script que lista todos los índices en tu servicio de búsqueda. Si hotels-quickstart no está listado, has eliminado exitosamente el índice creado en este tutorial. url = endpoint + "indexes" + api_version + "&$select=name" response = requests.get(url, headers=headers) index_list = response.json() pprint(index_list) Ejecuta ambas celdas y observa el resultado: