我需要将大量的Elasticsearch索引以JSON格式导出到S3,其中每个索引的大小大约为50GB。我已经研究了许多方法来实现这一点,但由于数据的大小,我需要最节省时间的方法。
我尝试了elasticdump,但是从测试结果来看,我认为它在将整个索引作为文件转储到S3之前会将其存储在内存中。因此,我需要一个内存超过50G的EC2示例。有没有办法让它转储一系列较小的文件,而不是一个巨大的文件?
还有其他的选择,比如使用Logstash,或者python的Elasticsearch库和可能的帮助器来完成操作。
最好的方法是什么?
1条答案
按热度按时间h7appiyu1#
ES到S3日志存储管道
要将原始
json
从Elasticsearch移动到S3存储桶,可以使用logstash管道中的s3输出。S3输出插件-参数
*bucket:保存数据的S3 bucket的名称。
*region:S3存储桶所在的AWS区域。
*访问密钥ID:有权写入S3存储桶的AWS访问密钥ID。
*秘密访问密钥:与访问密钥ID关联的AWS机密访问密钥。
*prefix:要添加到已保存数据的对象键的前缀。
*时间文件:将数据刷新到S3之前缓冲数据的最长时间(秒)。
*codec:用于对要保存的数据进行编码的编解码器。在本例中,我们使用两个编解码器-
json_lines
对JSON数据进行编码,plain将数据格式化为字符串。如果在ECS Container或EC2中运行此管道,则无需提供
ACCESS_KEY
和SECRET_KEY
,出于安全原因,可以创建角色并分配给ECS或EC2。