/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace CloudSearchDomain
{
/**
* You use the AmazonCloudSearch2013 API to upload documents to a search domain
* and search those documents.
The endpoints for submitting
* UploadDocuments
, Search
, and Suggest
* requests are domain-specific. To get the endpoints for your domain, use the
* Amazon CloudSearch configuration service DescribeDomains
action.
* The domain endpoints are also displayed on the domain dashboard in the Amazon
* CloudSearch console. You submit suggest requests to the search endpoint.
* For more information, see the Amazon
* CloudSearch Developer Guide.
*/
class AWS_CLOUDSEARCHDOMAIN_API CloudSearchDomainClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
static const char* SERVICE_NAME;
static const char* ALLOCATION_TAG;
typedef CloudSearchDomainClientConfiguration ClientConfigurationType;
typedef CloudSearchDomainEndpointProvider EndpointProviderType;
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
CloudSearchDomainClient(const Aws::CloudSearchDomain::CloudSearchDomainClientConfiguration& clientConfiguration = Aws::CloudSearchDomain::CloudSearchDomainClientConfiguration(),
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG));
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
CloudSearchDomainClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::CloudSearchDomain::CloudSearchDomainClientConfiguration& clientConfiguration = Aws::CloudSearchDomain::CloudSearchDomainClientConfiguration());
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
CloudSearchDomainClient(const std::shared_ptr& credentialsProvider,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::CloudSearchDomain::CloudSearchDomainClientConfiguration& clientConfiguration = Aws::CloudSearchDomain::CloudSearchDomainClientConfiguration());
/* Legacy constructors due deprecation */
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
CloudSearchDomainClient(const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
CloudSearchDomainClient(const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
CloudSearchDomainClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~CloudSearchDomainClient();
/**
* Retrieves a list of documents that match the specified search criteria. How
* you specify the search criteria depends on which query parser you use. Amazon
* CloudSearch supports four query parsers:
simple
:
* search all text
and text-array
fields for the
* specified string. Search for phrases, individual terms, and prefixes.
* structured
: search specific fields, construct compound queries
* using Boolean operators, and use advanced features such as term boosting and
* proximity searching. lucene
: specify search criteria using
* the Apache Lucene query parser syntax. dismax
: specify
* search criteria using the simplified subset of the Apache Lucene query parser
* syntax defined by the DisMax query parser.
For more information,
* see Searching
* Your Data in the Amazon CloudSearch Developer Guide.
The
* endpoint for submitting Search
requests is domain-specific. You
* submit search requests to a domain's search endpoint. To get the search endpoint
* for your domain, use the Amazon CloudSearch configuration service
* DescribeDomains
action. A domain's endpoints are also displayed on
* the domain dashboard in the Amazon CloudSearch console.
See
* Also:
AWS
* API Reference
*/
virtual Model::SearchOutcome Search(const Model::SearchRequest& request) const;
/**
* A Callable wrapper for Search that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::SearchOutcomeCallable SearchCallable(const SearchRequestT& request) const
{
return SubmitCallable(&CloudSearchDomainClient::Search, request);
}
/**
* An Async wrapper for Search that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void SearchAsync(const SearchRequestT& request, const SearchResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&CloudSearchDomainClient::Search, request, handler, context);
}
/**
* Retrieves autocomplete suggestions for a partial query string. You can use
* suggestions enable you to display likely matches before users finish typing. In
* Amazon CloudSearch, suggestions are based on the contents of a particular text
* field. When you request suggestions, Amazon CloudSearch finds all of the
* documents whose values in the suggester field start with the specified query
* string. The beginning of the field must match the query string to be considered
* a match.
For more information about configuring suggesters and
* retrieving suggestions, see Getting
* Suggestions in the Amazon CloudSearch Developer Guide.
The
* endpoint for submitting Suggest
requests is domain-specific. You
* submit suggest requests to a domain's search endpoint. To get the search
* endpoint for your domain, use the Amazon CloudSearch configuration service
* DescribeDomains
action. A domain's endpoints are also displayed on
* the domain dashboard in the Amazon CloudSearch console.
See
* Also:
AWS
* API Reference
*/
virtual Model::SuggestOutcome Suggest(const Model::SuggestRequest& request) const;
/**
* A Callable wrapper for Suggest that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::SuggestOutcomeCallable SuggestCallable(const SuggestRequestT& request) const
{
return SubmitCallable(&CloudSearchDomainClient::Suggest, request);
}
/**
* An Async wrapper for Suggest that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void SuggestAsync(const SuggestRequestT& request, const SuggestResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&CloudSearchDomainClient::Suggest, request, handler, context);
}
/**
* Posts a batch of documents to a search domain for indexing. A document batch
* is a collection of add and delete operations that represent the documents you
* want to add, update, or delete from your domain. Batches can be described in
* either JSON or XML. Each item that you want Amazon CloudSearch to return as a
* search result (such as a product) is represented as a document. Every document
* has a unique ID and one or more fields that contain the data that you want to
* search and return in results. Individual documents cannot contain more than 1 MB
* of data. The entire batch cannot exceed 5 MB. To get the best possible upload
* performance, group add and delete operations in batches that are close the 5 MB
* limit. Submitting a large volume of single-document batches can overload a
* domain's document service.
The endpoint for submitting
* UploadDocuments
requests is domain-specific. To get the document
* endpoint for your domain, use the Amazon CloudSearch configuration service
* DescribeDomains
action. A domain's endpoints are also displayed on
* the domain dashboard in the Amazon CloudSearch console.
For more
* information about formatting your data for Amazon CloudSearch, see Preparing
* Your Data in the Amazon CloudSearch Developer Guide. For more
* information about uploading data for indexing, see Uploading
* Data in the Amazon CloudSearch Developer Guide.
See
* Also:
AWS
* API Reference
*/
virtual Model::UploadDocumentsOutcome UploadDocuments(const Model::UploadDocumentsRequest& request) const;
/**
* A Callable wrapper for UploadDocuments that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::UploadDocumentsOutcomeCallable UploadDocumentsCallable(const UploadDocumentsRequestT& request) const
{
return SubmitCallable(&CloudSearchDomainClient::UploadDocuments, request);
}
/**
* An Async wrapper for UploadDocuments that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void UploadDocumentsAsync(const UploadDocumentsRequestT& request, const UploadDocumentsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&CloudSearchDomainClient::UploadDocuments, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods;
void init(const CloudSearchDomainClientConfiguration& clientConfiguration);
CloudSearchDomainClientConfiguration m_clientConfiguration;
std::shared_ptr m_executor;
std::shared_ptr m_endpointProvider;
};
} // namespace CloudSearchDomain
} // namespace Aws