Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Automatically offload dynamo table to cloud search domain

I'm using Dynamo DB pretty heavily for a service I'm building. A new client request has come in that requires cloud search. I see that a cloud search domain can be created from a dynamo table via the AWS console.

My question is this:

Is there a way to automatically offload data from a dynamo table into a cloud search domain via the API or otherwise at a specified time interval?

I'd prefer this to manually offloading dynamo documents to cloudsearch. All help greatly appreciated!

like image 847
The Internet Avatar asked May 12 '15 23:05

The Internet


People also ask

Is AWS CloudSearch deprecated?

Amazon Cloud Search is deprecated in Sitefinity 13.3. 7600.0.

What is the difference between CloudSearch and Elasticsearch?

In Elasticsearch, searching happens on both index and types using a search API. The search API also includes Faceting and Filtering for searching data. In CloudSearch, users create a search domain that includes sub-services to upload documents. A search service provides the means to search indexed data.

Does DynamoDB support search?

You can specify a DynamoDB table as a source when configuring indexing options or uploading data to a search domain through the console. This enables you to quickly set up a search domain to experiment with searching data stored in DynamoDB database tables.

Where does DynamoDB store data?

Amazon DynamoDB stores data in partitions. A partition is an allocation of storage for a table, backed by solid state drives (SSDs) and automatically replicated across multiple Availability Zones within an AWS Region.


1 Answers

Here are two ideas.

  1. The official AWS way of searching DynamoDB data with CloudSearch

    This approach is described pretty thoroughly in the "Synchronizing a Search Domain with a DynamoDB Table" section of http://docs.aws.amazon.com/cloudsearch/latest/developerguide/searching-dynamodb-data.html.

    The downside is that it sounds like a huge pain: you have to either re-create new search domains or maintain an update table in order to sync, and you'd need a cron job or something to execute the script.

  2. The AWS Lambdas way

    Use the newish Lambdas event processing service. It is pretty simple to set up an event stream based on Dynamo (see http://docs.aws.amazon.com/lambda/latest/dg/wt-ddb.html).

    Your Lambda would then submit a search document to CloudSearch based on the Dynamo event. For an example of submitting a document from a Lambda, see https://gist.github.com/fzakaria/4f93a8dbf483695fb7d5

    This approach is a lot nicer in my opinion as it would continuously update your search index without any involvement from you.

like image 94
alexroussos Avatar answered Sep 29 '22 07:09

alexroussos