azure.search.documents package

exception azure.search.documents.RequestEntityTooLargeError(message: object | None = None, response: _HttpResponseCommonAPI | None = None, **kwargs: Any)[source]

An error response with status code 413 - Request Entity Too Large

add_note()

Exception.add_note(note) – add a note to the exception

raise_with_traceback() None

Raise the exception with the existing traceback.

Deprecated since version 1.22.0: This method is deprecated as we don’t support Python 2 anymore. Use raise/from instead.

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

args
class azure.search.documents.ApiVersion(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]
capitalize()

Return a capitalized version of the string.

More specifically, make the first character have upper case and the rest lower case.

casefold()

Return a version of the string suitable for caseless comparisons.

center(width, fillchar=' ', /)

Return a centered string of length width.

Padding is done using the specified fill character (default is a space).

count(sub[, start[, end]]) int

Return the number of non-overlapping occurrences of substring sub in string S[start:end]. Optional arguments start and end are interpreted as in slice notation.

encode(encoding='utf-8', errors='strict')

Encode the string using the codec registered for encoding.

encoding

The encoding in which to encode the string.

errors

The error handling scheme to use for encoding errors. The default is ‘strict’ meaning that encoding errors raise a UnicodeEncodeError. Other possible values are ‘ignore’, ‘replace’ and ‘xmlcharrefreplace’ as well as any other name registered with codecs.register_error that can handle UnicodeEncodeErrors.

endswith(suffix[, start[, end]]) bool

Return True if S ends with the specified suffix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. suffix can also be a tuple of strings to try.

expandtabs(tabsize=8)

Return a copy where all tab characters are expanded using spaces.

If tabsize is not given, a tab size of 8 characters is assumed.

find(sub[, start[, end]]) int

Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.

Return -1 on failure.

format(*args, **kwargs) str

Return a formatted version of S, using substitutions from args and kwargs. The substitutions are identified by braces (‘{’ and ‘}’).

format_map(mapping) str

Return a formatted version of S, using substitutions from mapping. The substitutions are identified by braces (‘{’ and ‘}’).

index(sub[, start[, end]]) int

Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.

Raises ValueError when the substring is not found.

isalnum()

Return True if the string is an alpha-numeric string, False otherwise.

A string is alpha-numeric if all characters in the string are alpha-numeric and there is at least one character in the string.

isalpha()

Return True if the string is an alphabetic string, False otherwise.

A string is alphabetic if all characters in the string are alphabetic and there is at least one character in the string.

isascii()

Return True if all characters in the string are ASCII, False otherwise.

ASCII characters have code points in the range U+0000-U+007F. Empty string is ASCII too.

isdecimal()

Return True if the string is a decimal string, False otherwise.

A string is a decimal string if all characters in the string are decimal and there is at least one character in the string.

isdigit()

Return True if the string is a digit string, False otherwise.

A string is a digit string if all characters in the string are digits and there is at least one character in the string.

isidentifier()

Return True if the string is a valid Python identifier, False otherwise.

Call keyword.iskeyword(s) to test whether string s is a reserved identifier, such as “def” or “class”.

islower()

Return True if the string is a lowercase string, False otherwise.

A string is lowercase if all cased characters in the string are lowercase and there is at least one cased character in the string.

isnumeric()

Return True if the string is a numeric string, False otherwise.

A string is numeric if all characters in the string are numeric and there is at least one character in the string.

isprintable()

Return True if the string is printable, False otherwise.

A string is printable if all of its characters are considered printable in repr() or if it is empty.

isspace()

Return True if the string is a whitespace string, False otherwise.

A string is whitespace if all characters in the string are whitespace and there is at least one character in the string.

istitle()

Return True if the string is a title-cased string, False otherwise.

In a title-cased string, upper- and title-case characters may only follow uncased characters and lowercase characters only cased ones.

isupper()

Return True if the string is an uppercase string, False otherwise.

A string is uppercase if all cased characters in the string are uppercase and there is at least one cased character in the string.

join(iterable, /)

Concatenate any number of strings.

The string whose method is called is inserted in between each given string. The result is returned as a new string.

Example: ‘.’.join([‘ab’, ‘pq’, ‘rs’]) -> ‘ab.pq.rs’

ljust(width, fillchar=' ', /)

Return a left-justified string of length width.

Padding is done using the specified fill character (default is a space).

lower()

Return a copy of the string converted to lowercase.

lstrip(chars=None, /)

Return a copy of the string with leading whitespace removed.

If chars is given and not None, remove characters in chars instead.

static maketrans()

Return a translation table usable for str.translate().

If there is only one argument, it must be a dictionary mapping Unicode ordinals (integers) or characters to Unicode ordinals, strings or None. Character keys will be then converted to ordinals. If there are two arguments, they must be strings of equal length, and in the resulting dictionary, each character in x will be mapped to the character at the same position in y. If there is a third argument, it must be a string, whose characters will be mapped to None in the result.

partition(sep, /)

Partition the string into three parts using the given separator.

This will search for the separator in the string. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.

If the separator is not found, returns a 3-tuple containing the original string and two empty strings.

removeprefix(prefix, /)

Return a str with the given prefix string removed if present.

If the string starts with the prefix string, return string[len(prefix):]. Otherwise, return a copy of the original string.

removesuffix(suffix, /)

Return a str with the given suffix string removed if present.

If the string ends with the suffix string and that suffix is not empty, return string[:-len(suffix)]. Otherwise, return a copy of the original string.

replace(old, new, count=-1, /)

Return a copy with all occurrences of substring old replaced by new.

count

Maximum number of occurrences to replace. -1 (the default value) means replace all occurrences.

If the optional argument count is given, only the first count occurrences are replaced.

rfind(sub[, start[, end]]) int

Return the highest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.

Return -1 on failure.

rindex(sub[, start[, end]]) int

Return the highest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.

Raises ValueError when the substring is not found.

rjust(width, fillchar=' ', /)

Return a right-justified string of length width.

Padding is done using the specified fill character (default is a space).

rpartition(sep, /)

Partition the string into three parts using the given separator.

This will search for the separator in the string, starting at the end. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.

If the separator is not found, returns a 3-tuple containing two empty strings and the original string.

rsplit(sep=None, maxsplit=-1)

Return a list of the substrings in the string, using sep as the separator string.

sep

The separator used to split the string.

When set to None (the default value), will split on any whitespace character (including n r t f and spaces) and will discard empty strings from the result.

maxsplit

Maximum number of splits. -1 (the default value) means no limit.

Splitting starts at the end of the string and works to the front.

rstrip(chars=None, /)

Return a copy of the string with trailing whitespace removed.

If chars is given and not None, remove characters in chars instead.

split(sep=None, maxsplit=-1)

Return a list of the substrings in the string, using sep as the separator string.

sep

The separator used to split the string.

When set to None (the default value), will split on any whitespace character (including n r t f and spaces) and will discard empty strings from the result.

maxsplit

Maximum number of splits. -1 (the default value) means no limit.

Splitting starts at the front of the string and works to the end.

Note, str.split() is mainly useful for data that has been intentionally delimited. With natural text that includes punctuation, consider using the regular expression module.

splitlines(keepends=False)

Return a list of the lines in the string, breaking at line boundaries.

Line breaks are not included in the resulting list unless keepends is given and true.

startswith(prefix[, start[, end]]) bool

Return True if S starts with the specified prefix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. prefix can also be a tuple of strings to try.

strip(chars=None, /)

Return a copy of the string with leading and trailing whitespace removed.

If chars is given and not None, remove characters in chars instead.

swapcase()

Convert uppercase characters to lowercase and lowercase characters to uppercase.

title()

Return a version of the string where each word is titlecased.

More specifically, words start with uppercased characters and all remaining cased characters have lower case.

translate(table, /)

Replace each character in the string using the given translation table.

table

Translation table, which must be a mapping of Unicode ordinals to Unicode ordinals, strings, or None.

The table must implement lookup/indexing via __getitem__, for instance a dictionary or list. If this operation raises LookupError, the character is left untouched. Characters mapped to None are deleted.

upper()

Return a copy of the string converted to uppercase.

zfill(width, /)

Pad a numeric string with zeros on the left, to fill a field of the given width.

The string is never truncated.

V2020_06_30 = '2020-06-30'

this is the default version

V2023_11_01 = '2023-11-01'
V2024_07_01 = '2024-07-01'
class azure.search.documents.IndexDocumentsBatch[source]

Represent a batch of update operations for documents in an Azure Search index.

Index operations are performed in the order in which they are added to the batch.

add_delete_actions(*documents: List[Dict] | List[List[Dict]], **kwargs: Any) List[IndexAction][source]

Add documents to delete to the Azure search index.

Delete removes the specified document from the index. Any field you specify in a delete operation, other than the key field, will be ignored. If you want to remove an individual field from a document, use merge_documents instead and set the field explicitly to None.

Delete operations are idempotent. That is, even if a document key does not exist in the index, attempting a delete operation with that key will result in a 200 status code.

Parameters:

documents (dict or list[dict]) – Documents to delete from an Azure search index. May be a single list of documents, or documents as individual parameters.

Returns:

the added actions

Return type:

list[IndexAction]

add_merge_actions(*documents: List[Dict] | List[List[Dict]], **kwargs: Any) List[IndexAction][source]

Add documents to merge in to existing documents in the Azure search index.

Merge updates an existing document with the specified fields. If the document doesn’t exist, the merge will fail. Any field you specify in a merge will replace the existing field in the document. This also applies to collections of primitive and complex types.

Parameters:

documents (dict or list[dict]) – Documents to merge into an Azure search index. May be a single list of documents, or documents as individual parameters.

Returns:

the added actions

Return type:

list[IndexAction]

add_merge_or_upload_actions(*documents: List[Dict] | List[List[Dict]], **kwargs: Any) List[IndexAction][source]

Add documents to merge in to existing documents in the Azure search index, or upload if they do not yet exist.

This action behaves like merge if a document with the given key already exists in the index. If the document does not exist, it behaves like upload with a new document.

Parameters:

documents (dict or list[dict]) – Documents to merge or upload into an Azure search index. May be a single list of documents, or documents as individual parameters.

Returns:

the added actions

Return type:

list[IndexAction]

add_upload_actions(*documents: List[Dict] | List[List[Dict]]) List[IndexAction][source]

Add documents to upload to the Azure search index.

An upload action is similar to an “upsert” where the document will be inserted if it is new and updated/replaced if it exists. All fields are replaced in the update case.

Parameters:

documents (dict or list[dict]) – Documents to upload to an Azure search index. May be a single list of documents, or documents as individual parameters.

Returns:

the added actions

Return type:

list[IndexAction]

dequeue_actions(**kwargs: Any) List[IndexAction][source]

Get the list of currently configured index actions and clear it.

Returns:

the current actions

Return type:

list[IndexAction]

enqueue_actions(new_actions: IndexAction | List[IndexAction], **kwargs: Any) None[source]

Enqueue a list of index actions to index.

Parameters:

new_actions (IndexAction or list[IndexAction]) – the actions to enqueue

property actions: List[IndexAction]

The list of currently index actions to index.

Return type:

list[IndexAction]

class azure.search.documents.SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)[source]

A client to interact with an existing Azure search index.

Parameters:
  • endpoint (str) – The URL endpoint of an Azure search service

  • index_name (str) – The name of the index to connect to

  • credential (AzureKeyCredential or TokenCredential) – A credential to authorize search client requests

Keyword Arguments:
  • api_version (str) – The Search API version to use for requests.

  • audience (str) – sets the Audience to use for authentication with Azure Active Directory (AAD). The audience is not considered when using a shared key. If audience is not provided, the public cloud audience will be assumed.

Example:

Creating the SearchClient with an API key.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]
key = os.environ["AZURE_SEARCH_API_KEY"]

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
autocomplete(search_text: str, suggester_name: str, *, mode: str | AutocompleteMode | None = None, filter: str | None = None, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, search_fields: List[str] | None = None, top: int | None = None, **kwargs) List[Dict][source]

Get search auto-completion results from the Azure search index.

Parameters:
  • search_text (str) – The search text on which to base autocomplete results.

  • suggester_name (str) – The name of the suggester as specified in the suggesters collection that’s part of the index definition.

Keyword Arguments:
  • mode (str or AutocompleteMode) – Specifies the mode for Autocomplete. The default is ‘oneTerm’. Use ‘twoTerms’ to get shingles and ‘oneTermWithContext’ to use the current context while producing auto-completed terms. Possible values include: ‘oneTerm’, ‘twoTerms’, ‘oneTermWithContext’.

  • filter (str) – An OData expression that filters the documents used to produce completed terms for the Autocomplete result.

  • use_fuzzy_matching (bool) – A value indicating whether to use fuzzy matching for the autocomplete query. Default is false. When set to true, the query will find terms even if there’s a substituted or missing character in the search text. While this provides a better experience in some scenarios, it comes at a performance cost as fuzzy autocomplete queries are slower and consume more resources.

  • highlight_post_tag (str) – A string tag that is appended to hit highlights. Must be set with highlightPreTag. If omitted, hit highlighting is disabled.

  • highlight_pre_tag (str) – A string tag that is prepended to hit highlights. Must be set with highlightPostTag. If omitted, hit highlighting is disabled.

  • minimum_coverage (float) – A number between 0 and 100 indicating the percentage of the index that must be covered by an autocomplete query in order for the query to be reported as a success. This parameter can be useful for ensuring search availability even for services with only one replica. The default is 80.

  • search_fields (list[str]) – The list of field names to consider when querying for auto-completed terms. Target fields must be included in the specified suggester.

  • top (int) – The number of auto-completed terms to retrieve. This must be a value between 1 and 100. The default is 5.

Returns:

List of auto-completion results.

Return type:

list[dict]

Example:

Get a auto-completions.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))

results = search_client.autocomplete(search_text="bo", suggester_name="sg")

print("Autocomplete suggestions for 'bo'")
for result in results:
    print("    Completion: {}".format(result["text"]))
close() None[source]

Close the session. :return: None :rtype: None

delete_documents(documents: List[Dict], **kwargs: Any) List[IndexingResult][source]

Delete documents from the Azure search index

Delete removes the specified document from the index. Any field you specify in a delete operation, other than the key field, will be ignored. If you want to remove an individual field from a document, use merge_documents instead and set the field explicitly to None.

Delete operations are idempotent. That is, even if a document key does not exist in the index, attempting a delete operation with that key will result in a 200 status code.

Parameters:

documents (list[dict]) – A list of documents to delete.

Returns:

List of IndexingResult

Return type:

list[IndexingResult]

Example:

Delete existing documents to an index
result = search_client.delete_documents(documents=[{"hotelId": "1000"}])

print("Delete new document succeeded: {}".format(result[0].succeeded))
get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) Dict[source]

Retrieve a document from the Azure search index by its key.

Parameters:
  • key (str) – The primary key value for the document to retrieve

  • selected_fields (list[str]) – an allow-list of fields to include in the results

Returns:

The document as stored in the Azure search index

Return type:

dict

Example:

Get a specific document from the search index.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))

result = search_client.get_document(key="23")

print("Details for hotel '23' are:")
print("        Name: {}".format(result["hotelName"]))
print("      Rating: {}".format(result["rating"]))
print("    Category: {}".format(result["category"]))
get_document_count(**kwargs: Any) int[source]

Return the number of documents in the Azure search index.

Returns:

The count of documents in the index

Return type:

int

index_documents(batch: IndexDocumentsBatch, **kwargs: Any) List[IndexingResult][source]

Specify a document operations to perform as a batch.

Parameters:

batch (IndexDocumentsBatch) – A batch of document operations to perform.

Returns:

List of IndexingResult

Return type:

list[IndexingResult]

:raises ~azure.search.documents.RequestEntityTooLargeError

merge_documents(documents: List[Dict], **kwargs: Any) List[IndexingResult][source]

Merge documents in to existing documents in the Azure search index.

Merge updates an existing document with the specified fields. If the document doesn’t exist, the merge will fail. Any field you specify in a merge will replace the existing field in the document. This also applies to collections of primitive and complex types.

Parameters:

documents (list[dict]) – A list of documents to merge.

Returns:

List of IndexingResult

Return type:

list[IndexingResult]

Example:

Merge fields into existing documents to an index
result = search_client.merge_documents(documents=[{"hotelId": "1000", "rating": 4.5}])

print("Merge into new document succeeded: {}".format(result[0].succeeded))
merge_or_upload_documents(documents: List[Dict], **kwargs: Any) List[IndexingResult][source]

Merge documents in to existing documents in the Azure search index, or upload them if they do not yet exist.

This action behaves like merge_documents if a document with the given key already exists in the index. If the document does not exist, it behaves like upload_documents with a new document.

Parameters:

documents (list[dict]) – A list of documents to merge or upload.

Returns:

List of IndexingResult

Return type:

list[IndexingResult]

search(search_text: str | None = None, *, include_total_count: bool | None = None, facets: List[str] | None = None, filter: str | None = None, highlight_fields: str | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, query_type: str | QueryType | None = None, scoring_parameters: List[str] | None = None, scoring_profile: str | None = None, semantic_query: str | None = None, search_fields: List[str] | None = None, search_mode: str | SearchMode | None = None, query_answer: str | QueryAnswerType | None = None, query_answer_count: int | None = None, query_answer_threshold: float | None = None, query_caption: str | QueryCaptionType | None = None, query_caption_highlight_enabled: bool | None = None, semantic_configuration_name: str | None = None, select: List[str] | None = None, skip: int | None = None, top: int | None = None, scoring_statistics: str | ScoringStatistics | None = None, session_id: str | None = None, vector_queries: List[VectorQuery] | None = None, vector_filter_mode: str | VectorFilterMode | None = None, semantic_error_mode: str | SemanticErrorMode | None = None, semantic_max_wait_in_milliseconds: int | None = None, **kwargs: Any) SearchItemPaged[Dict][source]

Search the Azure search index for documents.

Parameters:

search_text (str) – A full-text search query expression; Use “*” or omit this parameter to match all documents.

Keyword Arguments:
  • include_total_count (bool) – A value that specifies whether to fetch the total count of results. Default is false. Setting this value to true may have a performance impact. Note that the count returned is an approximation.

  • facets (list[str]) – The list of facet expressions to apply to the search query. Each facet expression contains a field name, optionally followed by a comma-separated list of name:value pairs.

  • filter (str) – The OData $filter expression to apply to the search query.

  • highlight_fields (str) – The comma-separated list of field names to use for hit highlights. Only searchable fields can be used for hit highlighting.

  • highlight_post_tag (str) – A string tag that is appended to hit highlights. Must be set with highlightPreTag. Default is </em>.

  • highlight_pre_tag (str) – A string tag that is prepended to hit highlights. Must be set with highlightPostTag. Default is <em>.

  • minimum_coverage (float) – A number between 0 and 100 indicating the percentage of the index that must be covered by a search query in order for the query to be reported as a success. This parameter can be useful for ensuring search availability even for services with only one replica. The default is 100.

  • order_by (list[str]) – The list of OData $orderby expressions by which to sort the results. Each expression can be either a field name or a call to either the geo.distance() or the search.score() functions. Each expression can be followed by asc to indicate ascending, and desc to indicate descending. The default is ascending order. Ties will be broken by the match scores of documents. If no OrderBy is specified, the default sort order is descending by document match score. There can be at most 32 $orderby clauses.

  • query_type (str or QueryType) – A value that specifies the syntax of the search query. The default is ‘simple’. Use ‘full’ if your query uses the Lucene query syntax. Possible values include: ‘simple’, ‘full’, “semantic”.

  • scoring_parameters (list[str]) – The list of parameter values to be used in scoring functions (for example, referencePointParameter) using the format name-values. For example, if the scoring profile defines a function with a parameter called ‘mylocation’ the parameter string would be “mylocation–122.2,44.8” (without the quotes).

  • scoring_profile (str) – The name of a scoring profile to evaluate match scores for matching documents in order to sort the results.

  • semantic_query (str) – Allows setting a separate search query that will be solely used for semantic reranking, semantic captions and semantic answers. Is useful for scenarios where there is a need to use different queries between the base retrieval and ranking phase, and the L2 semantic phase.

  • search_fields (list[str]) – The list of field names to which to scope the full-text search. When using fielded search (fieldName:searchExpression) in a full Lucene query, the field names of each fielded search expression take precedence over any field names listed in this parameter.

  • search_mode (str or SearchMode) – A value that specifies whether any or all of the search terms must be matched in order to count the document as a match. Possible values include: ‘any’, ‘all’.

  • query_answer (str or QueryAnswerType) – This parameter is only valid if the query type is ‘semantic’. If set, the query returns answers extracted from key passages in the highest ranked documents. Possible values include: “none”, “extractive”.

  • query_answer_count (int) – This parameter is only valid if the query type is ‘semantic’ and query answer is ‘extractive’. Configures the number of answers returned. Default count is 1.

  • query_answer_threshold (float) – This parameter is only valid if the query type is ‘semantic’ and query answer is ‘extractive’. Configures the number of confidence threshold. Default count is 0.7.

  • query_caption (str or QueryCaptionType) – This parameter is only valid if the query type is ‘semantic’. If set, the query returns captions extracted from key passages in the highest ranked documents. Defaults to ‘None’. Possible values include: “none”, “extractive”.

  • query_caption_highlight_enabled (bool) – This parameter is only valid if the query type is ‘semantic’ when query caption is set to ‘extractive’. Determines whether highlighting is enabled. Defaults to ‘true’.

  • semantic_configuration_name (str) – The name of the semantic configuration that will be used when processing documents for queries of type semantic.

  • select (list[str]) – The list of fields to retrieve. If unspecified, all fields marked as retrievable in the schema are included.

  • skip (int) – The number of search results to skip. This value cannot be greater than 100,000. If you need to scan documents in sequence, but cannot use $skip due to this limitation, consider using $orderby on a totally-ordered key and $filter with a range query instead.

  • top (int) – The number of search results to retrieve. This can be used in conjunction with $skip to implement client-side paging of search results. If results are truncated due to server-side paging, the response will include a continuation token that can be used to issue another Search request for the next page of results.

  • scoring_statistics (str or ScoringStatistics) – A value that specifies whether we want to calculate scoring statistics (such as document frequency) globally for more consistent scoring, or locally, for lower latency. The default is ‘local’. Use ‘global’ to aggregate scoring statistics globally before scoring. Using global scoring statistics can increase latency of search queries. Possible values include: “local”, “global”.

  • session_id (str) – A value to be used to create a sticky session, which can help getting more consistent results. As long as the same sessionId is used, a best-effort attempt will be made to target the same replica set. Be wary that reusing the same sessionID values repeatedly can interfere with the load balancing of the requests across replicas and adversely affect the performance of the search service. The value used as sessionId cannot start with a ‘_’ character.

  • semantic_error_mode (str or SemanticErrorMode) – Allows the user to choose whether a semantic call should fail completely (default / current behavior), or to return partial results. Known values are: “partial” and “fail”.

  • semantic_max_wait_in_milliseconds (int) – Allows the user to set an upper bound on the amount of time it takes for semantic enrichment to finish processing before the request fails.

  • vector_queries (list[VectorQuery]) – The query parameters for vector and hybrid search queries.

  • vector_filter_mode (str or VectorFilterMode) – Determines whether or not filters are applied before or after the vector search is performed. Default is ‘preFilter’. Known values are: “postFilter” and “preFilter”.

Returns:

List of search results.

Return type:

SearchItemPaged[dict]

Example:

Search on a simple text term.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))

results = search_client.search(search_text="spa")

print("Hotels containing 'spa' in the name (or other fields):")
for result in results:
    print("    Name: {} (rating {})".format(result["hotelName"], result["rating"]))

Example:

Filter and sort search results.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))

results = search_client.search(
    search_text="WiFi",
    filter="Address/StateProvince eq 'FL' and Address/Country eq 'USA'",
    select=["hotelName", "rating"],
    order_by=["rating desc"],
)

print("Florida hotels containing 'WiFi', sorted by Rating:")
for result in results:
    print("    Name: {} (rating {})".format(result["hotelName"], result["rating"]))

Example:

Get search result facets.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))

results = search_client.search(search_text="WiFi", facets=["category,count:3", "parkingIncluded"])

facets: Dict[str, List[str]] = cast(Dict[str, List[str]], results.get_facets())

print("Catgory facet counts for hotels:")
for facet in facets["category"]:
    print("    {}".format(facet))
send_request(request: HttpRequest, *, stream: bool = False, **kwargs) HttpResponse[source]

Runs a network request using the client’s existing pipeline.

Parameters:

request (HttpRequest) – The network request you want to make.

Keyword Arguments:

stream (bool) – Whether the response payload will be streamed. Defaults to False.

Returns:

The response of your network call. Does not do error handling on your response.

Return type:

HttpResponse

suggest(search_text: str, suggester_name: str, *, filter: str | None = None, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, search_fields: List[str] | None = None, select: List[str] | None = None, top: int | None = None, **kwargs) List[Dict][source]

Get search suggestion results from the Azure search index.

Parameters:
  • search_text (str) – Required. The search text to use to suggest documents. Must be at least 1 character, and no more than 100 characters.

  • suggester_name (str) – Required. The name of the suggester as specified in the suggesters collection that’s part of the index definition.

Keyword Arguments:
  • filter (str) – An OData expression that filters the documents considered for suggestions.

  • use_fuzzy_matching (bool) – A value indicating whether to use fuzzy matching for the suggestions query. Default is false. When set to true, the query will find terms even if there’s a substituted or missing character in the search text. While this provides a better experience in some scenarios, it comes at a performance cost as fuzzy suggestions queries are slower and consume more resources.

  • highlight_post_tag (str) – A string tag that is appended to hit highlights. Must be set with highlightPreTag. If omitted, hit highlighting of suggestions is disabled.

  • highlight_pre_tag (str) – A string tag that is prepended to hit highlights. Must be set with highlightPostTag. If omitted, hit highlighting of suggestions is disabled.

  • minimum_coverage (float) – A number between 0 and 100 indicating the percentage of the index that must be covered by a suggestions query in order for the query to be reported as a success. This parameter can be useful for ensuring search availability even for services with only one replica. The default is 80.

  • order_by (list[str]) – The list of OData $orderby expressions by which to sort the results. Each expression can be either a field name or a call to either the geo.distance() or the search.score() functions. Each expression can be followed by asc to indicate ascending, or desc to indicate descending. The default is ascending order. Ties will be broken by the match scores of documents. If no $orderby is specified, the default sort order is descending by document match score. There can be at most 32 $orderby clauses.

  • search_fields (list[str]) – The list of field names to search for the specified search text. Target fields must be included in the specified suggester.

  • select (list[str]) – The list of fields to retrieve. If unspecified, only the key field will be included in the results.

  • top (int) – The number of suggestions to retrieve. The value must be a number between 1 and 100. The default is 5.

Returns:

List of suggestion results.

Return type:

list[dict]

Example:

Get search suggestions.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))

results = search_client.suggest(search_text="coffee", suggester_name="sg")

print("Search suggestions for 'coffee'")
for result in results:
    hotel = search_client.get_document(key=result["hotelId"])
    print("    Text: {} for Hotel: {}".format(repr(result["text"]), hotel["hotelName"]))
upload_documents(documents: List[Dict], **kwargs: Any) List[IndexingResult][source]

Upload documents to the Azure search index.

An upload action is similar to an “upsert” where the document will be inserted if it is new and updated/replaced if it exists. All fields are replaced in the update case.

Parameters:

documents (list[dict]) – A list of documents to upload.

Returns:

List of IndexingResult

Return type:

list[IndexingResult]

Example:

Upload new documents to an index
DOCUMENT = {
    "category": "Hotel",
    "hotelId": "1000",
    "rating": 4.0,
    "rooms": [],
    "hotelName": "Azure Inn",
}

result = search_client.upload_documents(documents=[DOCUMENT])

print("Upload of new document succeeded: {}".format(result[0].succeeded))
class azure.search.documents.SearchIndexingBufferedSender(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)[source]

A buffered sender for document indexing actions.

Parameters:
  • endpoint (str) – The URL endpoint of an Azure search service

  • index_name (str) – The name of the index to connect to

  • credential (AzureKeyCredential or TokenCredential) – A credential to authorize search client requests

Keyword Arguments:
  • auto_flush_interval (int) – how many max seconds if between 2 flushes. This only takes effect when auto_flush is on. Default to 60 seconds.

  • initial_batch_action_count (int) – The initial number of actions to group into a batch when tuning the behavior of the sender. The default value is 512.

  • max_retries_per_action (int) – The number of times to retry a failed document. The default value is 3.

  • on_new (callable) – If it is set, the client will call corresponding methods when there is a new IndexAction added. This may be called from main thread or a worker thread.

  • on_progress (callable) – If it is set, the client will call corresponding methods when there is a IndexAction succeeds. This may be called from main thread or a worker thread.

  • on_error (callable) – If it is set, the client will call corresponding methods when there is a IndexAction fails. This may be called from main thread or a worker thread.

  • on_remove (callable) – If it is set, the client will call corresponding methods when there is a IndexAction removed from the queue (succeeds or fails). This may be called from main thread or a worker thread.

  • api_version (str) – The Search API version to use for requests.

  • audience (str) – sets the Audience to use for authentication with Azure Active Directory (AAD). The audience is not considered when using a shared key. If audience is not provided, the public cloud audience will be assumed.

close(**kwargs) None[source]

Close the session. :return: None :rtype: None

delete_documents(documents: List[Dict], **kwargs) None[source]

Queue delete documents actions

Parameters:

documents (list[dict]) – A list of documents to delete.

flush(timeout: int = 86400, **kwargs: Any) bool[source]

Flush the batch.

Parameters:

timeout (int) – time out setting. Default is 86400s (one day)

Returns:

True if there are errors. Else False

Return type:

bool

Raises:

ServiceResponseTimeoutError

index_documents(batch: IndexDocumentsBatch, **kwargs) List[IndexingResult][source]

Specify a document operations to perform as a batch.

Parameters:

batch (IndexDocumentsBatch) – A batch of document operations to perform.

Returns:

Indexing result of each action in the batch.

Return type:

list[IndexingResult]

:raises ~azure.search.documents.RequestEntityTooLargeError

merge_documents(documents: List[Dict], **kwargs) None[source]

Queue merge documents actions

Parameters:

documents (list[dict]) – A list of documents to merge.

merge_or_upload_documents(documents: List[Dict], **kwargs) None[source]

Queue merge documents or upload documents actions

Parameters:

documents (list[dict]) – A list of documents to merge or upload.

upload_documents(documents: List[Dict], **kwargs) None[source]

Queue upload documents actions.

Parameters:

documents (list[dict]) – A list of documents to upload.

property actions: List[IndexAction]

The list of currently index actions in queue to index.

Return type:

list[IndexAction]

class azure.search.documents.SearchItemPaged(*args, **kwargs)[source]

Return an iterator of items.

args and kwargs will be passed to the PageIterator constructor directly, except page_iterator_class

by_page(continuation_token: str | None = None) Iterator[Iterator[ReturnType]]

Get an iterator of pages of objects, instead of an iterator of objects.

Parameters:

continuation_token (str) – An opaque continuation token. This value can be retrieved from the continuation_token field of a previous generator object. If specified, this generator will begin returning results from this point.

Returns:

An iterator of pages (themselves iterator of objects)

Return type:

iterator[iterator[ReturnType]]

get_answers() List[QueryAnswerResult] | None[source]

Return semantic answers. Only included if the semantic ranker is used and answers are requested in the search query via the query_answer parameter.

Returns:

answers

Return type:

list[QueryAnswerResult] or None

get_count() int[source]

Return the count of results if include_total_count was set for the query.

Returns:

count of results

Return type:

int

get_coverage() float[source]

Return the coverage percentage, if minimum_coverage was specificied for the query.

Returns:

coverage percentage

Return type:

float

get_facets() Dict | None[source]

Return any facet results if faceting was requested.

Returns:

facet results

Return type:

dict or None

next() ReturnType

Return the next item from the iterator. When exhausted, raise StopIteration

Subpackages