azure.search.documents package¶
-
exception
azure.search.documents.
RequestEntityTooLargeError
(message=None, response=None, **kwargs)[source]¶ An error response with status code 413 - Request Entity Too Large
-
raise_with_traceback
()¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
args
¶
-
-
class
azure.search.documents.
IndexDocumentsBatch
[source]¶ Represent a batch of upate 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, **kwargs)[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, **kwargs)[source]¶ Add documents to merge in to existing documets 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, **kwargs)[source]¶ Add documents to merge in to existing documets 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 uplaod 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)[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) → List[IndexAction][source]¶ Get the list of currently configured index actions and clear it.
- Return type
List[IndexAction]
-
property
actions
¶ The list of currently index actions to index.
- Return type
List[IndexAction]
-
-
class
azure.search.documents.
SearchClient
(endpoint: str, index_name: str, credential: AzureKeyCredential, **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) – A credential to authorize search client requests
- Keyword Arguments
api_version (str) – The Search API version to use for requests.
Example:
from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") index_name = os.getenv("AZURE_SEARCH_INDEX_NAME") key = os.getenv("AZURE_SEARCH_API_KEY") search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
-
autocomplete
(search_text: str, suggester_name: str, **kwargs: Any) → List[dict][source]¶ Get search auto-completion results from the Azure search index.
- Parameters
collection that’s part of the index definition. :keyword mode: 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’.
- Keyword Arguments
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.
- Return type
List[dict]
Example:
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
SearchClient
session.
-
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.
- Return type
List[IndexingResult]
Example:
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, **kwargs: Any) → dict[source]¶ Retrieve a document from the Azure search index by its key.
- Parameters
- Return type
Example:
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.
- Return type
-
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.
- Return type
List[IndexingResult]
:raises
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.
- Return type
List[IndexingResult]
Example:
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.
- Return type
List[IndexingResult]
-
search
(search_text: str, **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 bool include_total_count: 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. :keyword list[str] facets: 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.
- Keyword Arguments
filter (str) – The OData $filter expression to apply to the search query.
highlight_fields (list[str]) – The 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’.
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.
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’.
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.
- Return type
Example:
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:
from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) select = ("HotelName", "Rating") results = search_client.search( search_text="WiFi", filter="Address/StateProvince eq 'FL' and Address/Country eq 'USA'", select=",".join(select), 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:
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 = results.get_facets() print("Catgory facet counts for hotels:") for facet in facets["Category"]: print(" {}".format(facet))
-
suggest
(search_text: str, suggester_name: str, **kwargs: Any) → 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. :param str suggester_name: Required. The name of the suggester as specified in the suggesters collection that’s part of the index definition. :keyword str filter: An OData expression that filters the documents considered for suggestions. :keyword bool use_fuzzy_matching: 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.
- Keyword Arguments
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.
- Return type
List[dict]
Example:
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.
- Return type
List[IndexingResult]
Example:
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.
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: Optional[str] = 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)
-
get_count
() → float[source]¶ Return the count of results if include_total_count was set for the query.
-
get_coverage
() → float[source]¶ Return the covereage percentage, if minimum_coverage was specificied for the query.
-
next
()¶ Return the next item from the iterator. When exhausted, raise StopIteration
-
-
class
azure.search.documents.
SearchIndexingBufferedSender
(endpoint: str, index_name: str, credential: AzureKeyCredential, **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) – 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.
-
close
(**kwargs) → None[source]¶ Close the
SearchClient
session.
-
delete_documents
()[source]¶ Queue delete documents actions
- Parameters
documents (List[dict]) – A list of documents to delete.
-
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.
- Return type
List[IndexingResult]
:raises
RequestEntityTooLargeError
-
merge_documents
()[source]¶ Queue merge documents actions
- Parameters
documents (List[dict]) – A list of documents to merge.
-
merge_or_upload_documents
()[source]¶ Queue merge documents or upload documents actions
- Parameters
documents (List[dict]) – A list of documents to merge or upload.
-
upload_documents
()[source]¶ Queue upload documents actions.
- Parameters
documents (List[dict]) – A list of documents to upload.
-
property
actions
¶ The list of currently index actions in queue to index.
- Return type
List[IndexAction]