将DynamoDB与ElasticSearch同步以获取旧数据

时间:2018-12-04 10:58:07

标签: elasticsearch amazon-dynamodb-streams

我正在使用此功能https://github.com/bfansports/dynamodb-to-elasticsearch将我的DynamoDB表与ElasticSearch同步。不幸的是,尽管我选择了“新旧图像-项目的新旧图像,但它仅处理新添加的数据和更新的数据,而不处理表中以前存在的行。 “在管理流”部分。

该如何解决?

1 个答案:

答案 0 :(得分:0)

好吧,我最终更新了DynamoDB,并触发了Stream,因此可以完成ElasticSearch和DynamoDB之间的同步。 这是我使用的脚本:

import json
import boto3
import random


def lambda_handler(event, context):

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('image-library')

response = table.scan(
    ProjectionExpression='#k',
    ExpressionAttributeNames={
        '#k' : 'id', #partition key
    }
)

items = response['Items']

random_number = random.randint(0,1000)

for item in items:
    response = table.update_item(
        Key=item,
        UpdateExpression='SET #f = :f',
        ExpressionAttributeNames={
            '#f' :'force_update'
        },
        ExpressionAttributeValues={
            ':f' : random_number
        }

    )