Elasticsearch 查询结果导出到 csv/excel 文件

Elasticsearch query results export to csv/excel file

我们在 ES 集群中索引了数十亿条记录,每个文档将包含帐户 ID、交易 ID、用户名等字段(很少有自由文本字符串数据字段)

我的应用程序将根据一些用户搜索参数查询 ES(例如 return 用户 'A' 在 X 和 Y 日期之间的交易以及一些其他过滤器)并且我想 store/export csv/excel 文件的响应数据。

对于我的用例,从 ES return 编辑的文档数量可能有数十万或数百万,我的问题是导出 "large" 数据量的各种方法有哪些来自 ES?

这些请求是 "real-time" 个请求,而不是批处理(例如 - 请求的用户正在等待创建导出的文件)。

我了解了分页 (size/from) 和滚动方法,但不确定这些是否是从 ES 导出大型数据集的最佳方法。 (size/from 如果我正确阅读,方法的最大设置为 10K,并且不推荐将滚动选项用于实时用例)。

想请教专家。

如果您的用户需要导出大量数据,您需要教育他们不要期望导出是实时完成的(为了您的其他用户和您的系统的福祉) ).

这绝对是批处理作业。用户通过您的 UI 触发导出,然后一些进程将唤醒并异步执行。完成后,您通知用户可以在某个位置下载导出文件,或者您通过电子邮件发送文件。

举个例子,当你想从 Twitter 导出你的数据时,你会触发一个请求,稍后你会收到通知(即使你的帐户中只有几条推文)你的数据已被导出导出。

如果您决定继续这样做,那么没有什么能阻止您使用 scan/scroll 方法。