Azure Machine Learning - 使用 REST API 创建 Azure AI 搜索索引

本文介绍如何使用 Azure AI 搜索 REST AP和用于发送和接收请求的 REST 客户端以交互方式构建请求。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

环境准备

  • Postman 应用,用于将请求发送到 Azure AI 搜索。

  • [创建 Azure AI 搜索服务]或在当前订阅下查找现有服务。 可以使用本快速入门的免费服务。

复制密钥和 URL

REST 调用需要在每个请求中使用服务 URL 和访问密钥。 搜索服务是使用这二者创建的,因此,如果向订阅添加了 Azure AI 搜索,则请按以下步骤获取必需信息:

  1. 登录到 Azure 门户,在搜索服务的“概览”页中获取 URL。 示例终结点可能类似于 https://mydemo.search.windows.net

  2. 在“设置”>“密钥”中,获取有关该服务的完全权限的管理员密钥 。 有两个可交换的管理员密钥,为保证业务连续性而提供,以防需要滚动一个密钥。 可以在请求中使用主要或辅助密钥来添加、修改和删除对象。

file

所有请求对发送到服务的每个请求都需要 API 密钥。 具有有效的密钥可以在发送请求的应用程序与处理请求的服务之间建立信任关系,这种信任关系以每个请求为基础。

连接到 Azure AI 搜索

连接信息在 URI 终结点中指定。 集合变量用于表示搜索服务名称和 API 密钥。 本快速入门中的典型 URI 如下所示:

https://{{service-name}}.search.windows.net/indexes/hotels-quickstart?api-version=2020-06-30

请注意 HTTPS 前缀、服务变量的名称、对象的名称(在本例中为索引集合中的某个索引的名称)和 api-version。 api-version 是必需的。

请求头组合包括两个元素:Content-Type,以及用于向 Azure AI 搜索进行身份验证的 api-keyapi-key 指定为变量,也是必需的。

若要使请求成功,需要提供服务名称和 api-key 作为集合变量。

  1. 打开 Postman 应用并导入集合。

  2. 选择集合的访问菜单,选择“编辑”,并提供搜索服务的服务名称和密钥。
    file

1 - 创建索引

在 Azure AI 搜索中,通常会先创建索引,然后再连同数据一起加载索引。 本任务将使用[创建索引 REST API]。

需扩展 URL 以包含 hotels-quickstart 索引名称。

  1. 将谓词设置为 PUT。

  2. 复制此 URL https://{{service-name}}.search.windows.net/indexes/hotels-quickstart?api-version=2020-06-30

  3. 在请求正文中提供索引定义(接下来提供可直接复制的代码)。

  4. 选择“发送”。

file

索引定义

字段集合定义文档结构。 每个文档必须包含这些字段,每个字段必须具有一个数据类型。 字符串字段用于全文搜索。 如果你需要使数值数据可供搜索,则需要将数值数据强制转换为字符串。

字段的属性决定了允许的操作。 默认情况下,REST API 允许很多操作。 例如,默认情况下,所有字符串均可供搜索、检索、筛选、分面。 通常,仅当需要禁用某种行为时,才要设置属性。

{"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": "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}]}]
}

提交此请求后,会获得 HTTP 201 响应,指示索引已成功创建。 可以在门户中验证此操作,但请注意,门户页有刷新时间间隔,因此可能需要等待一到两分钟。

2 - 加载文档

创建索引和填充索引是分开的步骤。 在 Azure AI 搜索中,索引包含所有可搜索的数据。 在此场景中,数据以 JSON 文档的形式提供。 本任务将使用[添加、更新或删除文档 REST API]。

需扩展 URL 以包含 docs 集合与 index 操作。

  1. 将谓词设置为 POST。

  2. 复制此 URL https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/docs/index?api-version=2020-06-30

  3. 在请求的正文中提供 JSON 文档(接下来提供可直接复制的代码)。

  4. 选择“发送”。

file

要载入索引的 JSON 文档

请求正文包含四个要添加到 hotels 索引的文档。

{"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.","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.","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.","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.","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"}}]
}

在几秒钟内,应在会话列表中看到 HTTP 201 响应。 这指示已成功创建文档。

如果收到 207,则指示至少有一个文档无法上传。 如果收到 404,则表示请求的标头或正文有语法错误:请验证是否已更改终结点,使之包括 /docs/index

提示

对于所选数据源,可[创建索引器],这可简化并减少索引所需的代码量。

3 - 搜索索引

现在,索引和文档集已加载,可以使用搜索文档 REST API 针对它们发出查询了。

需扩展 URL,以包含使用搜索运算符指定的查询表达式。

  1. 将谓词设置为 GET。

  2. 复制此 URL https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=*&$count=true&api-version=2020-06-30

  3. 选择Send

此查询为空,在搜索结果中返回文档的计数。 在选择“发送”后,请求和响应应类似于以下针对 Postman 的屏幕截图。 状态代码应为 200。
file
尝试其他查询示例来了解语法。 你可以执行字符串搜索、逐字筛选查询、限制结果集、将搜索范围限定为特定字段等。

# Query example 1 - Search on restaurant and wifi
# Return only the HotelName, Description, and Tags fields
https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=restaurant wifi&$count=true&$select=HotelName,Description,Tags&api-version=2020-06-30# Query example 2 - Apply a filter to the index to find hotels rated 4 or highter
# Returns the HotelName and Rating. Two documents match
https://{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=*&$filter=Rating gt 4&$select=HotelName,Rating&api-version=2020-06-30# Query example 3 - Take the top two results, and show only HotelName and Category in the results
https://{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=boutique&$top=2&$select=HotelName,Category&api-version=2020-06-30# Query example 4 - Sort by a specific field (Address/City) in ascending order
https://{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=pool&$orderby=Address/City asc&$select=HotelName, Address/City, Tags, Rating&api-version=2020-06-30

获取索引属性

还可以使用获取统计信息来查询文档计数和索引大小:

https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/stats?api-version=2020-06-30

向 URL 添加 /stats 会返回索引信息。 在 Postman 中,请求应如下所示,响应包括文档计数和所用空间(以字节为单位)。
file
请注意,api-version 语法有所不同。 对于此请求,请使用 ? 来追加 api-version。 ? 将 URL 路径与查询字符串分隔开,而 & 将查询字符串中的每个“名称=值”对分隔开。 就此查询来说,api-version 是查询字符串中的第一个项,也是唯一项。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/191102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】14、DHCP

文章目录 一、概述1.1 好处 二、概念2.1 分配 IP2.2 控制租赁时间2.3 DHCP 的其他网络功能2.4 IP地址范围和用户类别2.5 安全 三、DHCP 消息3.1 DHCP discover message3.2 DHCP offers a message 如果没有 DHCP,IT管理者必须手动选出可用的 ip,这太耗时了…

TA-Lib学习研究笔记——Price Transform (五)

TA-Lib学习研究笔记——Price Transform (五) 1.AVGPRICE Average Price 函数名:AVGPRICE 名称:平均价格函数 语法: real AVGPRICE(open, high, low, close) df[AVGPRICE] tlb.AVGPRICE(df[open],df[high],df[low…

【Python基础】内存管理机制

1. Python的内存分配 何时分配内存 使用对象时自动分配,查看对象内存所占大小,可以使用sys.getsizeof() 何时释放内存 不再使用对象时自动释放,释放时机由解释器内部策略控制 对象内存使用划分 一部分用于存储对象的数据一部分用于存储对象…

php 中生成订单号

字母日期。。。。。。。 function setOrderNo($year 2011) {$yCode array(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z);$orderSn $yCode[intval(date(Y)) - $year] . strtoupper(dechex(date(m))) . date(d) . substr(time(), -5) . s…

电子印章管理系统:是什么、3个平台推荐

说到印章,相信看过近现代电视剧的人都见过,一般在订立合约时最常用到,双方在合约上加盖印鉴,即代表着合约的成立。 我小时候还见过我父亲的印章,只是随着时代的发展,印章因为不易携带,容易被盗…

Java 使用zxing生成二维码

POM文件&#xff0c;引用 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.google.zxing</groupId><ar…

java 猜数字游戏

package com.gaoce;import java.util.Random; import java.util.Scanner;/*** ClassName: GuessNumber* Package: com.org* Description: 猜数字游戏* Author: H* Create: 2023/12/1 16:26* Version: 1.0*/public class GuessNumber {Random random new Random();public int r…

C++标准库类型string基本成员函数用法

标准库类型string&#xff0c;基本函数成员用法详细讲解 文章目录 标准库类型string&#xff0c;基本函数成员用法详细讲解一、头文件二、string构造函数三、string赋值函数assign四、string拼接函数append五、string查找函数 find和 rfind六、string替换函数 replace七、strin…

二叉树OJ题目——C语言

LeetCode 104.二叉树的最大深度 1. 题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例…

CSS浅谈动画性能

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目的一、举个栗子二、性能分析1.从图层分析2.性能分析 总结 目的 为了探究使用动画时&#xff0c;『transform』和『width、height、margin等』的差异 一、举个栗子…

【1】基于多设计模式下的同步异步日志系统

1. 项目介绍 本项⽬主要实现⼀个⽇志系统&#xff0c; 其主要⽀持以下功能: • ⽀持多级别⽇志消息 • ⽀持同步⽇志和异步⽇志 • ⽀持可靠写⼊⽇志到控制台、⽂件以及滚动⽂件中 • ⽀持多线程程序并发写⽇志 • ⽀持扩展不同的⽇志落地⽬标地 2. 开发环境 • CentOS 7 • vs…

Prism.js实现代码高亮并添加行号

先上效果: Prism.js Prism 是一款轻量、可扩展的代码语法高亮库&#xff0c;使用现代化的 Web 标准构建。 使用 Prismjs 可以快速为网站添加代码高亮功能&#xff0c;支持超过113中编程语言&#xff0c;还支持多种插件&#xff0c;是简洁、高效的代码高亮解决方案。 为什么选…

C++跨目录include问题

不同文件夹下使用预处理器指示符#include 使用举例 假设我们有如下一个工程&#xff0c;其中包含了几个源代码和头文件&#xff0c;其中main.cpp是主源代码文件&#xff0c;里面含有main函数&#xff1a; 在foldder main中包含&#xff1a;func4.hpp&#xff0c;func4.cpp&am…

1.0 十大经典排序算法

分类 算法 本系列算法整理自&#xff1a;https://github.com/hustcc/JS-Sorting-Algorithm 同时也参考了维基百科做了一些补充。 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#…

Python遥感开发之批量镶嵌

Python遥感开发之批量镶嵌 0.ArcGis镶嵌1.Arcpy实现镶嵌1.1 Arcpy实现单个镶嵌1.2 Arcpy实现批量镶嵌 2.GDAL实现镶嵌 前言&#xff1a;主要介绍了遥感数据的镶嵌&#xff0c;其中包括使用ArcGis如何完成镶嵌&#xff0c;如何使用Arcpy和GDAL完成镶嵌。 0.ArcGis镶嵌 是ArcGis…

PyLMKit(2):快速开始大模型应用开发

快速开始 GitHub&#xff1a;https://github.com/52phm/pylmkitPyLMKit 官方教程 PyLMKit应用&#xff08;online application&#xff09;English document中文文档 0.下载安装 pip install -U pylmkit --user1.设置 API KEY 一个方便的方法是创建一个新的.env文件&#…

mysql中int(10)和char(10),varchar(10)区别是什么?

整体对比表格 int(10)char(10)varchar(10)存储方式二进制整数字符集编码的字符串字符集编码的字符串存储空间固定为4字节固定为10字节根据实际使用长度变化&#xff0c;通常更小存储内容整数字符串(用空格填充)字符串(不需要填充)比较大小整数的比较字符串的字典序比较字符串的…

物流单管理系统软件物流单打印,物流单打印模板,佳易王物流快运单管理软件下载

物流单管理系统软件物流单打印&#xff0c;物流单打印模板&#xff0c;佳易王物流快运单管理软件下载 软件试用版下载或技术支持可以点击最下方官网卡片 上图&#xff1a;在物流开单时&#xff0c;可以先输入电话&#xff0c;如果之前存在该托运人信息&#xff0c;则可以一键…

高德Map

使用 官网&#xff1a;JS API 结合Vue使用 npm i amap/amap-jsapi-loader --saveimport AMapLoader from amap/amap-jsapi-loader;marker的属性、事件、方法 https://lbs.amap.com/api/javascript-api-v2/documentation#marker 自定义marker 为创建的 Marker 指定自定义图…

Motion 5 for Mac,释放创意,打造精彩视频特效!

Motion 5 for Mac是一款强大的视频后期特效处理软件&#xff0c;为Mac用户提供了无限的创意可能性。无论你是专业的影视制作人&#xff0c;还是想为个人视频添加独特特效的爱好者&#xff0c;Motion 5都能满足你的需求&#xff0c;让你的视频脱颖而出。 Motion 5提供了丰富多样…