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