ElasticsearchCRUD使用(八)【使用Elasticsearch和WebAPI导出CSV】

释放双眼,带上耳机,听听看~!

本文演示如何使用Web API将数据从Elasticsearch导出到CSV文件。 使用_search扫描和滚动从Elasticsearch检索数据。 该API可以非常快速地检索数据,无需任何排序。 然后使用来自Jordan Gray的WebApiContrib.Formatting.Xlsx将数据导出到CSV文件。 导出的进度显示在使用SignalR(MVC razor视图)的HTML页面中。

建立

导出使用在上一篇文章中创建的人物索引。 使用别名persons访问此索引persons_v2。 由于索引几乎没有数据,约20000条记录,导出可以导出为单个CSV文件或单个块。

Person类用于从Elasticsearch检索数据,并将数据导出到CSV文件。 根据需要添加不同的属性。

现在数据模型已经准备就绪,可以实现导出。 这是在PersonsCsvExportController类中完全实现的。 GetPersonsCsvExport方法获取数据,将其导出为CSV文件,并使用SignalR将诊断消息添加到HTML页面。

Elasticsearch扫描并滚动与ElasticsearchCRUD

扫描和滚动功能可用于快速选择数据,无需任何排序,因为排序是一项很花费时间的操作。 使用_search API(SearchCreateScanAndScroll)的第一个请求定义了扫描的查询,并返回此查询的匹配总数以及scrollId。
此scrollId然后用于检索下一个滚动。 扫描配置有ScanAndScrollConfiguration类。 该类定义在定义的时间限制内要检索的项目数量(最大)。 如果定义了300,并且索引具有5个分片,则如果服务器可以在时间限制内完成此操作,则1500个文档将被滚动请求。

所有以下滚动请求都会返回一个新的scrollId,然后将其用于下一个滚动(n + 1)。 直到扫描中的所有文档都被选中为止。

ElasticsearchCRUD TraceProvider使用SignalR

该示例还跟踪使用SignalR的所有ElasticsearchCRUD消息。 创建一个IHubContext,然后在SignalRTraceProvider中使用它

如果跟踪事件级别的值低于构造函数中定义的最小值,则TraceProvider会向所有客户端发送消息。

SignalR可以从NuGet下载并设置如下:(有关更多信息,请参阅ASP.NET SignalR文档)

SignalR HTML客户端配置如下:

可以在Home / Index MVC视图中查看或使用下载和诊断:
ElasticsearchCRUD使用(八)【使用Elasticsearch和WebAPI导出CSV】

并且下载的CSV与Elasticsearch数据导出:
ElasticsearchCRUD使用(八)【使用Elasticsearch和WebAPI导出CSV】

如果您需要在未分类的领地中从Elasticsearch中选择大量的数据,扫描和滚动将非常有用。 这对于备份,重新建立索引或将数据导出到不同的介质中很有用。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索