我需要将数据从RDS(MySQL)和S3(文档)索引到Elasticsearch中,以便执行全文本搜索。
我注意到AWS Kinesis似乎很理想,并且可以听S3和MySQL,并将格式化后的结果流式传输到Elasticsearch中。
但是,我不了解的是如何使用Kinesis批量处理现有数据。
对于RDS-to-Elasticsearch,我已经看到go-mysql-elasticsearch的替代方案可以为我处理此问题,但这仍然使我陷入了千兆字节S3数据提取的困境。
有人解决了这个问题吗?我宁愿设置尽可能简单。
谢谢
最佳答案
数据充实/元数据
至于将元数据添加到ElasticSearch中的条目,您可能会想到有时称为数据“丰富”的数据。有一个非常detailed blog post over here,它讨论如何使用静态和动态引用数据来摄取和丰富数据。通过使用AWS Lambda来丰富数据,您可以对数据源运行动态查询并修改记录,然后再通过Kinesis Firehose将其提取到ElasticSearch中。
批量导入
Kinesis Data Streams API支持称为PutRecords
的批处理摄取API。通过一个API调用,您最多可以将500条记录提取到Kinesis Data Stream中。关于此的公告是over here。
一旦为新记录设置了获取和充实管道,就可以编写一个应用程序来检索比建立管道的日期更早的记录,并将其写入Kinesis Data Stream。
Amazon Kinesis Data Streams | Service API Reference | PutRecords