如何解决如何使用弹性搜索索引 10 亿行 CSV 文件?
您无法将文件加载到内存中 - 它太大,因此必须流式传输或分块。
花费的时间不是问题。首要任务是确保所有数据都被编入索引,没有丢失数据。
您如何看待这种方法:
第 1 部分:准备数据
- 以 1000 行为单位循环遍历 CSV 文件
- 对于每个批次,将行转换为 JSON 并将它们保存到一个较小的文件中
- 您现在有 100 万个文件,每个文件都有 1000 行漂亮的 JSON
- 文件名应该是递增的 ID。例如,从 1.json 运行到 1000000.json
第 2 部分:上传数据
解决方法
您上面提到的步骤看起来不错。确保 ES 不会承受负载的其他一些事情:
- 根据我的经验,您也可以将批量请求大小增加到更大的值,比如在 4k-7k 范围内的某个地方(从 7k 开始,如果它引起痛苦,请尝试较小的批次但低于可能不需要 4k)。
- 确保将
refresh_interval
的值设置为非常大的值。这将确保文档不会被频繁索引。 IMO 默认值也可以。阅读更多here。
正如上面的评论所暗示的,如果您从少量数据开始会更好。当然,如果您使用常量而不是对值进行硬编码,您的任务就会变得更容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。