Добавление, обновление или удаление документов (предварительная версия REST API)
применимо к: 2023-07-01-Preview. Эта версия больше не поддерживается. немедленное обновление до более новой версии.
Важный
2023-07-01-Preview добавляет:
- Поддержка векторных полей в документе.
Вы можете отправить документы, содержащие векторные поля в указанный индекс, с помощью HTTP POST. Для большого обновления пакетная обработка (до 1000 документов на пакет или около 16 МБ на пакет) повышает производительность индексирования.
POST https://[service name].search.windows.net/indexes/[index name]/docs/index?api-version=2023-07-01-Preview
Content-Type: application/json
api-key: [admin key]
Параметры URI
Параметр | Описание |
---|---|
Имя службы | Обязательно. Задайте для этого значения уникальное, определяемое пользователем имя службы поиска. |
Имя индекса | Обязательно. Задайте для этого значения имя индекса, получающего документы. Одновременно можно публиковать только документы в один индекс. |
версия API | Дополнительные версии API см. в версиях API. |
Заголовки запросов
В следующей таблице описаны обязательные и необязательные заголовки запросов.
Поля | Описание |
---|---|
Тип контента | Обязательно. Задайте для этого значения значение application/json |
api-key | Необязательно, если вы используете роли Azure и маркер носителя предоставляется в запросе, в противном случае требуется ключ. Ключ API — это уникальная, созданная системой строка, которая проверяет подлинность запроса в службе поиска. Для отправки документов требуется ключ API администратора. Дополнительные сведения см. в статье Connect to Azure AI Search using key authentication. |
Текст запроса
Текст запроса содержит один или несколько документов для индексирования. Документы однозначно идентифицируются с помощью ключа с учетом регистра. Каждый документ связан с действием: "upload", "delete", "merge" или "mergeOrUpload". Запросы на отправку должны содержать данные документа в виде набора пар "ключ-значение".
Векторные поля имеют тип Collection(Edm.Single)
. Векторные данные состоят из массива чисел с плавающей запятой с одной точностью.
Векторные поля могут содержать тысячи внедрения в зависимости от сложности, длины или типа исходного содержимого. Поиск по искусственному интеллекту Azure не преобразует содержимое в внедрение. Документы, которые вы отправляете в индекс, должны содержать вставки, созданные ранее.
{
"value": [
{
"@search.action": "upload (default) | merge | mergeOrUpload | delete",
"key_field_name": "unique_key_of_document", (key/value pair for key field from index schema)
"field_name": field_value (key/value pairs matching index schema),
"vector_field_name": [ array of single-precision floating point numbers ]
...
},
...
]
}
Свойство | Описание |
---|---|
@search.action | Обязательно. Допустимые значения: upload, delete, merge или mergeOrUpload. По умолчанию используется значение "upload". |
key_field_name | Обязательно. Определение поля в индексе, которое служит ключом документа и содержит только уникальные значения. Ключи документов могут содержать только буквы, цифры, дефисы ("-" ), подчеркивания ("_" ), а также знаки равенства ("=" ) и учитывает регистр. |
field_name | Обязательно. Пары "Имя-значение", где имя поля соответствует имени поля в определении индекса. Значение определяется пользователем, но должно быть допустимым для типа поля. |
Ответ
Код состояния: 200 возвращается для успешного ответа, что означает, что все элементы были сохранены, а индексирование началось. Индексирование выполняется в фоновом режиме и делает новые документы доступными (т. е. запрашиваемыми и доступными для поиска) через несколько секунд после завершения операции индексирования.
Успешное индексирование указывается, когда свойство состояния имеет значение true для всех элементов. Свойство statusCode должно иметь значение 201 (для только что отправленных документов) или 200 (для объединенных или удаленных документов).
Примеры
пример . Отправка двух документов с текстовым и векторным содержимым
Для удобства чтения в следующем примере показан подмножество документов и внедрения. Текст запроса "Отправить документы" состоит из 108 документов, каждый из которых содержит полный набор внедрения для titleVector и contentVector.
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/index?api-version={{api-version}}
Content-Type: application/json
api-key: {{admin-api-key}}
{
"value": [
{
"id": "1",
"title": "Azure App Service",
"content": "Azure App Service is a fully managed platform for building, deploying, and scaling web apps. You can host web apps, mobile app backends, and RESTful APIs. It supports a variety of programming languages and frameworks, such as .NET, Java, Node.js, Python, and PHP. The service offers built-in auto-scaling and load balancing capabilities. It also provides integration with other Azure services, such as Azure DevOps, GitHub, and Bitbucket.",
"category": "Web",
"titleVector": [
-0.02250031754374504,
. . .
],
"contentVector": [
-0.024740582332015038,
. . .
],
"@search.action": "upload"
},
{
"id": "2",
"title": "Azure Functions",
"content": "Azure Functions is a serverless compute service that enables you to run code on-demand without having to manage infrastructure. It allows you to build and deploy event-driven applications that automatically scale with your workload. Functions support various languages, including C#, F#, Node.js, Python, and Java. It offers a variety of triggers and bindings to integrate with other Azure services and external services. You only pay for the compute time you consume.",
"category": "Compute",
"titleVector": [
-0.020159931853413582,
. . .
],
"contentVector": [
-0.02780858241021633,,
. . .
],
"@search.action": "upload"
}
. . .
]
}
Заметка
При отправке DateTimeOffset
значений с сведениями часового пояса в индекс поиск Azure AI нормализует эти значения в формате UTC. Например, 2019-01-13T14:03:00-08:00 будет храниться как 2019-01-13T22:03:00Z. Если вам нужно хранить сведения часового пояса, добавьте дополнительный столбец в индекс.