javascript - 从Elasticsearch下载300,000+行作为.csv文件

标签 javascript database elasticsearch npm

您好,我在nodejs中有一个网站,在Elasticsearch中有一个数据库。索引“bigData *”有366,844行,每行有25个项目,每个项目都有一个不同的字符串,大小不同,最大约为100个字符。我正在将此索引查询到页面上显示的数据表中,我使用滚动逐步将元素加载到表中并将其显示在页面上。数据表具有“全部下载”选项,但它只会下载页面上加载的内容。我正在尝试实现真正的“全部下载”,该功能将提取所有366,844行,将其编译为文件(csv),然后从网页下载。
我尝试使用滚动,就像它如何加载数据一样,反复调用数据库10,000行。每次花费30秒,因此总共需要20分钟。
我知道类似这样的事情可能会花费一些时间,我不希望即时解决方案。但是我的方法也使chrome非常缓慢且缓慢,甚至几乎崩溃了一点。有人建议下载这么多数据吗?甚至我项目的npm软件包或库都可以在后台准备好下载。
谢谢

最佳答案

这里有几件事:

  • 当显示很多行时,您可能需要使用virtual scrolling,它将DOM元素(<tr><td>,...)的数量保持在合理的水平,并防止滚动变慢和变乱。您在使用vanillaJS还是某些框架?那里有一堆虚拟滚动库。
  • 如果10,000行需要30秒,请分批查询(〜200-500)。当您的用户向下滚动时,另一个批查询将已经解决并且可以呈现。
  • 听起来您将始终希望下载所有366,844行-未应用过滤器。如果是这样,在上面的顶部,我会以合理的间隔执行S3 bucket csv 'dumps'(可能是同一个文件被每个备份覆盖),并在表的上方直接在<a href="..." target="_blank" >中链接最新的文件。这样,您的网站将保持整洁,客户端可以在自己方便的时候下载CSV。
  • 关于javascript - 从Elasticsearch下载300,000+行作为.csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62651804/

    相关文章:

    javascript - 浏览器中的 websocket 客户端可以发送 header 吗?

    javascript - 在 VisNetwork 的 nodesIdSelection 框中扩展维度,使标签适合而不被 chop

    mysql - 我如何从连接表中查询?

    sql - PostgreSQL - 错误 : relation "table_name" does not exist. 如何在没有架构名称的情况下进行查询?

    elasticsearch - 如何显示日期名称,在 Elasticsearch 中使用日期直方图聚合

    mongodb - 将ElasticSearch与MongoDB数据库集成

    javascript - CSS 更改 [使用 JS]

    javascript - jQuery 根据内容删除 Div

    mysql - WooCommerce:在数据库中查找产品

    performance - ES:使用全局聚合的准联接查询与父子/嵌套查询相比如何?