Синхронизация DynamoDB с ElasticSearch для старых данных - PullRequest
0 голосов
/ 04 декабря 2018

Я использую эту функцию https://github.com/bfansports/dynamodb-to-elasticsearch для синхронизации моей таблицы DynamoDB с ElasticSearch.К сожалению, он обрабатывает только недавно добавленные и обновленные данные, а не ранее существующие строки в таблице, несмотря на то, что я выбрал «Новые и старые изображения - как новые, так и старые изображения элемента» в разделе «Управление потоком».

Как это исправить?

1 Ответ

0 голосов
/ 05 декабря 2018

Хорошо, я закончил с обновлением DynamoDB, и это запускает Поток, так что Синхронизация между 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
        }

    )
...