Skip to main content

Actions

The ballerinax/azure.ai.search.index package exposes the following clients:

ClientPurpose
ClientPerform search, document lookup, indexing, autocomplete, and suggestion operations on an Azure AI Search index.

Client​

Perform search, document lookup, indexing, autocomplete, and suggestion operations on an Azure AI Search index.

Configuration​

FieldTypeDefaultDescription
httpVersionhttp:HttpVersionHTTP_2_0HTTP protocol version.
timeoutdecimal30Request timeout in seconds.
retryConfighttp:RetryConfig()Retry configuration for failed requests.
secureSockethttp:ClientSecureSocket()SSL/TLS configuration.
proxyhttp:ProxyConfig()Proxy server configuration.
compressionhttp:Compressionhttp:COMPRESSION_AUTOCompression setting for requests and responses.
circuitBreakerhttp:CircuitBreakerConfig()Circuit breaker configuration for fault tolerance.
cachehttp:CacheConfig{}HTTP cache configuration.
validationbooleantrueEnable or disable payload validation.

Initializing the client​

import ballerinax/azure.ai.search.index as index;

configurable string serviceUrl = ?;
configurable string indexName = ?;

index:Client azureSearchClient = check new (string `${serviceUrl}/indexes/${indexName}`);

Operations​

documentsSearchGet

Searches for documents in the index using query parameters. Supports full-text search, filters, facets, highlighting, ordering, and scoring.

Parameters:

NameTypeRequiredDescription
headersDocumentsSearchGetHeadersNoRequest headers including api-key for authentication and optional x-ms-client-request-id.
queriesDocumentsSearchGetQueriesYesQuery parameters including api-version (required), search, $filter, $select, $orderby, $top, $skip, $count, queryType, searchMode, and more.

Returns: SearchDocumentsResult|error

Sample code:

index:DocumentsSearchGetHeaders headers = {"api-key": apiKey};
index:SearchDocumentsResult result = check azureSearchClient->documentsSearchGet(headers,
api\-version = "2025-09-01",
search = "technology",
\$count = true,
\$select = ["content", "title"]
);

Sample response:

{
"@odata.count": 3,
"value": [
{
"@search.score": 1.5,
"content": "Latest advances in technology...",
"title": "Tech Overview"
},
{
"@search.score": 1.2,
"content": "Cloud technology solutions...",
"title": "Cloud Computing"
}
]
}
documentsSearchPost

Searches for documents using a POST request body. Supports all search features including vector search and semantic search.

Parameters:

NameTypeRequiredDescription
payloadSearchRequestYesSearch request body with fields such as search, filter, queryType, select, top, skip, vectorQueries, semanticConfiguration, etc.
headersDocumentsSearchPostHeadersNoRequest headers including api-key for authentication.
queriesDocumentsSearchPostQueriesYesQuery parameters including api-version (required).

Returns: SearchDocumentsResult|error

Sample code:

index:DocumentsSearchPostHeaders headers = {"api-key": apiKey};
index:SearchDocumentsResult result = check azureSearchClient->documentsSearchPost(
{
search: "cloud computing",
queryType: "semantic",
semanticConfiguration: "my-semantic-config",
count: true,
top: 5,
select: "title,content,category"
},
headers,
api\-version = "2025-09-01"
);

Sample response:

{
"@odata.count": 2,
"value": [
{
"@search.score": 2.1,
"@search.rerankerScore": 3.8,
"title": "Cloud Computing Guide",
"content": "Comprehensive guide to cloud computing...",
"category": "Technology"
}
]
}

Document retrieval​

documentsGet

Retrieves a specific document from the index by its unique key.

Parameters:

NameTypeRequiredDescription
keystringYesThe unique key identifying the document to retrieve.
headersDocumentsGetHeadersNoRequest headers including api-key for authentication.
queriesDocumentsGetQueriesYesQuery parameters including api-version (required) and optional $select to limit returned fields.

Returns: LookupDocument|error

Sample code:

index:DocumentsGetHeaders headers = {"api-key": apiKey};
index:LookupDocument doc = check azureSearchClient->documentsGet("doc-001", headers,
api\-version = "2025-09-01"
);

Sample response:

{
"id": "doc-001",
"title": "Introduction to Azure AI Search",
"content": "Azure AI Search is a cloud search service...",
"category": "Documentation"
}
documentsCount

Returns the total number of documents in the search index.

Parameters:

NameTypeRequiredDescription
headersDocumentsCountHeadersNoRequest headers including api-key for authentication.
queriesDocumentsCountQueriesYesQuery parameters including api-version (required).

Returns: int|error

Sample code:

index:DocumentsCountHeaders headers = {"api-key": apiKey};
int count = check azureSearchClient->documentsCount(headers,
api\-version = "2025-09-01"
);

Sample response:

1542

Document indexing​

documentsIndex

Uploads, merges, or deletes documents in a batch operation. Each action in the batch specifies the operation type.

Parameters:

NameTypeRequiredDescription
payloadIndexBatchYesA batch of index actions. Each IndexAction includes @search.action (upload, merge, mergeOrUpload, or delete) and the document fields.
headersDocumentsIndexHeadersNoRequest headers including api-key for authentication.
queriesDocumentsIndexQueriesYesQuery parameters including api-version (required).

Returns: IndexDocumentsResult|error

Sample code:

index:DocumentsIndexHeaders headers = {"api-key": apiKey};
index:IndexDocumentsResult result = check azureSearchClient->documentsIndex(
{
value: [
{"@search.action": "upload", "id": "doc-100", "title": "New Document", "content": "Document content here..."},
{"@search.action": "mergeOrUpload", "id": "doc-101", "title": "Updated Document", "content": "Updated content..."},
{"@search.action": "delete", "id": "doc-050"}
]
},
headers,
api\-version = "2025-09-01"
);

Sample response:

{
"value": [
{"key": "doc-100", "status": true, "statusCode": 201},
{"key": "doc-101", "status": true, "statusCode": 200},
{"key": "doc-050", "status": true, "statusCode": 200}
]
}

Suggestions​

documentsSuggestGet

Retrieves search suggestions based on partial query input using query parameters. Requires a pre-configured suggester on the index.

Parameters:

NameTypeRequiredDescription
headersDocumentsSuggestGetHeadersNoRequest headers including api-key for authentication.
queriesDocumentsSuggestGetQueriesYesQuery parameters including api-version (required), search (required), suggesterName (required), and optional $filter, $select, $orderby, $top.

Returns: SuggestDocumentsResult|error

Sample code:

index:DocumentsSuggestGetHeaders headers = {"api-key": apiKey};
index:SuggestDocumentsResult result = check azureSearchClient->documentsSuggestGet(headers,
api\-version = "2025-09-01",
search = "clou",
suggesterName = "sg",
\$select = ["title"],
\$top = 5
);

Sample response:

{
"value": [
{"@search.text": "cloud computing", "title": "Cloud Computing Guide"},
{"@search.text": "cloud storage", "title": "Cloud Storage Overview"}
]
}
documentsSuggestPost

Retrieves search suggestions using a POST request body. Requires a pre-configured suggester on the index.

Parameters:

NameTypeRequiredDescription
payloadSuggestRequestYesSuggest request body with search (required), suggesterName (required), and optional filter, select, orderby, top, fuzzy, etc.
headersDocumentsSuggestPostHeadersNoRequest headers including api-key for authentication.
queriesDocumentsSuggestPostQueriesYesQuery parameters including api-version (required).

Returns: SuggestDocumentsResult|error

Sample code:

index:DocumentsSuggestPostHeaders headers = {"api-key": apiKey};
index:SuggestDocumentsResult result = check azureSearchClient->documentsSuggestPost(
{
search: "clou",
suggesterName: "sg",
fuzzy: true,
top: 5,
select: "title,category"
},
headers,
api\-version = "2025-09-01"
);

Sample response:

{
"value": [
{"@search.text": "cloud computing", "title": "Cloud Computing Guide", "category": "Technology"},
{"@search.text": "cloud architecture", "title": "Cloud Architecture Patterns", "category": "Architecture"}
]
}

Autocomplete​

documentsAutocompleteGet

Completes partial query terms using query parameters. Requires a pre-configured suggester on the index.

Parameters:

NameTypeRequiredDescription
headersDocumentsAutocompleteGetHeadersNoRequest headers including api-key for authentication.
queriesDocumentsAutocompleteGetQueriesYesQuery parameters including api-version (required), search (required), suggesterName (required), and optional autocompleteMode, $filter, fuzzy, $top.

Returns: AutocompleteResult|error

Sample code:

index:DocumentsAutocompleteGetHeaders headers = {"api-key": apiKey};
index:AutocompleteResult result = check azureSearchClient->documentsAutocompleteGet(headers,
api\-version = "2025-09-01",
search = "tech",
suggesterName = "sg",
autocompleteMode = "twoTerms"
);

Sample response:

{
"value": [
{"text": "technology", "queryPlusText": "technology"},
{"text": "technical documentation", "queryPlusText": "technical documentation"}
]
}
documentsAutocompletePost

Completes partial query terms using a POST request body. Requires a pre-configured suggester on the index.

Parameters:

NameTypeRequiredDescription
payloadAutocompleteRequestYesAutocomplete request body with search (required), suggesterName (required), and optional autocompleteMode, filter, fuzzy, top.
headersDocumentsAutocompletePostHeadersNoRequest headers including api-key for authentication.
queriesDocumentsAutocompletePostQueriesYesQuery parameters including api-version (required).

Returns: AutocompleteResult|error

Sample code:

index:DocumentsAutocompletePostHeaders headers = {"api-key": apiKey};
index:AutocompleteResult result = check azureSearchClient->documentsAutocompletePost(
{
search: "tech",
suggesterName: "sg",
autocompleteMode: "oneTermWithContext",
fuzzy: true
},
headers,
api\-version = "2025-09-01"
);

Sample response:

{
"value": [
{"text": "technology trends", "queryPlusText": "technology trends"},
{"text": "technical overview", "queryPlusText": "technical overview"}
]
}