All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.cloudsearchdomain.AmazonCloudSearchDomainClient Maven / Gradle / Ivy

Go to download

The AWS SDK for Java with support for OSGi. The AWS SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. The AWS Java SDK allows developers to code against APIs for all of Amazon's infrastructure web services (Amazon S3, Amazon EC2, Amazon SQS, Amazon Relational Database Service, Amazon AutoScaling, etc).

There is a newer version: 1.11.60
Show newest version
/*
 * Copyright 2011-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not
 * use this file except in compliance with the License. A copy of the License is
 * located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package com.amazonaws.services.cloudsearchdomain;

import org.w3c.dom.*;

import java.net.*;
import java.util.*;
import java.util.Map.Entry;

import org.apache.commons.logging.*;

import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.handlers.*;
import com.amazonaws.http.*;
import com.amazonaws.internal.*;
import com.amazonaws.internal.auth.*;
import com.amazonaws.metrics.*;
import com.amazonaws.regions.*;
import com.amazonaws.transform.*;
import com.amazonaws.util.*;
import com.amazonaws.protocol.json.*;
import com.amazonaws.util.AWSRequestMetrics.Field;
import com.amazonaws.annotation.ThreadSafe;
import com.amazonaws.client.AwsSyncClientParams;
import com.amazonaws.AmazonServiceException;

import com.amazonaws.services.cloudsearchdomain.model.*;
import com.amazonaws.services.cloudsearchdomain.model.transform.*;

/**
 * Client for accessing Amazon CloudSearch Domain. All service calls made using
 * this client are blocking, and will not return until the service call
 * completes.
 * 

*

* 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. *

*/ @ThreadSafe public class AmazonCloudSearchDomainClient extends AmazonWebServiceClient implements AmazonCloudSearchDomain { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory .getLog(AmazonCloudSearchDomain.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "cloudsearch"; /** * Client configuration factory providing ClientConfigurations tailored to * this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); private final SdkJsonProtocolFactory protocolFactory = new SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.1") .withSupportsCbor(false) .withContentTypeOverride("") .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("SearchException") .withModeledClass( com.amazonaws.services.cloudsearchdomain.model.SearchException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("DocumentServiceException") .withModeledClass( com.amazonaws.services.cloudsearchdomain.model.DocumentServiceException.class)) .withBaseServiceExceptionClass( com.amazonaws.services.cloudsearchdomain.model.AmazonCloudSearchDomainException.class)); /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain. A credentials provider chain will be used that searches for * credentials in this order: *
    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 * metadata service
  • *
* *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ public AmazonCloudSearchDomainClient() { this(new DefaultAWSCredentialsProviderChain(), configFactory .getConfig()); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain. A credentials provider chain will be used that searches for * credentials in this order: *

    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 * metadata service
  • *
* *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param clientConfiguration * The client configuration options controlling how this client * connects to Amazon CloudSearch Domain (ex: proxy settings, retry * counts, etc.). * * @see DefaultAWSCredentialsProviderChain */ public AmazonCloudSearchDomainClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain using the specified AWS account credentials. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. */ public AmazonCloudSearchDomainClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain using the specified AWS account credentials and client * configuration options. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to Amazon CloudSearch Domain (ex: proxy settings, retry * counts, etc.). */ public AmazonCloudSearchDomainClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider( awsCredentials); init(); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain using the specified AWS account credentials provider. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. */ public AmazonCloudSearchDomainClient( AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain using the specified AWS account credentials provider and client * configuration options. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to Amazon CloudSearch Domain (ex: proxy settings, retry * counts, etc.). */ public AmazonCloudSearchDomainClient( AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain using the specified AWS account credentials provider, client * configuration options, and request metric collector. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to Amazon CloudSearch Domain (ex: proxy settings, retry * counts, etc.). * @param requestMetricCollector * optional request metric collector */ public AmazonCloudSearchDomainClient( AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } /** * Constructs a new client to invoke service methods on Amazon CloudSearch * Domain using the specified parameters. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param clientParams * Object providing client parameters. */ AmazonCloudSearchDomainClient(AwsSyncClientParams clientParams) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s .addAll(chainFactory .newRequestHandlerChain("/com/amazonaws/services/cloudsearchdomain/request.handlers")); requestHandler2s .addAll(chainFactory .newRequestHandler2Chain("/com/amazonaws/services/cloudsearchdomain/request.handler2s")); } /** *

* 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. *

* * @param searchRequest * Container for the parameters to the Search request. * @return Result of the Search operation returned by the service. * @throws SearchException * Information about any problems encountered while processing a * search request. * @sample AmazonCloudSearchDomain.Search */ @Override public SearchResult search(SearchRequest searchRequest) { ExecutionContext executionContext = createExecutionContext(searchRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new SearchRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(searchRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new SearchResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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. *

* * @param suggestRequest * Container for the parameters to the Suggest request. * @return Result of the Suggest operation returned by the service. * @throws SearchException * Information about any problems encountered while processing a * search request. * @sample AmazonCloudSearchDomain.Suggest */ @Override public SuggestResult suggest(SuggestRequest suggestRequest) { ExecutionContext executionContext = createExecutionContext(suggestRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new SuggestRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(suggestRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new SuggestResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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. *

* * @param uploadDocumentsRequest * Container for the parameters to the UploadDocuments * request. * @return Result of the UploadDocuments operation returned by the service. * @throws DocumentServiceException * Information about any problems encountered while processing an * upload request. * @sample AmazonCloudSearchDomain.UploadDocuments */ @Override public UploadDocumentsResult uploadDocuments( UploadDocumentsRequest uploadDocumentsRequest) { ExecutionContext executionContext = createExecutionContext(uploadDocumentsRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UploadDocumentsRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(uploadDocumentsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new UploadDocumentsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, * request, typically used for debugging issues where a service isn't acting * as expected. This data isn't considered part of the result data returned * by an operation, so it's available through this separate, diagnostic * interface. *

* Response metadata is only cached for a limited period of time, so if you * need to access this extra diagnostic information for an executed request, * you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none * is available. */ public ResponseMetadata getCachedResponseMetadata( AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be * overriden at the request level. **/ private Response invoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { executionContext.setCredentialsProvider(CredentialUtils .getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext); } /** * Invoke with no authentication. Credentials are not required and any * credentials set on the client or request will be ignored for this * operation. **/ private Response anonymousInvoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext); } /** * Invoke the request using the http client. Assumes credentials (or lack * thereof) have been configured in the ExecutionContext beforehand. **/ private Response doInvoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); HttpResponseHandler errorResponseHandler = protocolFactory .createErrorResponseHandler(new JsonErrorResponseMetadata()); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy