加载中

CSV

注意

我们建议仅使用 CSV 报告导出适量的数据。此功能可用于在外部工具中分析数据,但它并不旨在用于批量导出或备份 Elasticsearch 数据。以下情况会增加超时或数据不完整的风险

  • 导出的数据量超过 250 MB
  • 数据存储在慢速存储层上
  • 搜索所需的任何分片不可用
  • 节点之间的网络延迟很高
  • 查询跨多个索引或远程集群使用跨集群搜索 (CCS)
  • 使用了 ES|QL 且结果行数超过了 ES|QL 查询的限制

对于大型或长时间运行的导出,请直接使用 Elasticsearch API。这是批量提取数据的推荐途径。为减小报告大小,请使用过滤器创建多个较小的报告。

有关直接使用 Elasticsearch API 的更多信息,请参阅 Scroll APIPoint in time APIES|QL 或带有 CSV 响应数据格式的 SQL。我们建议您使用官方的 Elastic 语言客户端:有关 Elastic 提供的每种编程语言库的详细信息,请参见 Elasticsearch 客户端文档

报告参数可以进行调整,以克服其中一些限制性场景。结果取决于数据大小、可用性和延迟因素,且不作保证。

Kibana 中的 CSV 导出功能向 Elasticsearch 发起查询并将结果格式化为 CSV。此功能提供了一个旨在为大多数用例提供最大收益的解决方案。但是,导出过程中可能会出现问题。Elasticsearch 可能会停止响应,重复查询可能耗时过长导致身份验证令牌超时,导出数据的格式对于电子表格应用程序来说可能过于复杂。此类情况不在 Kibana 的控制范围内。如果用例变得非常复杂,建议您编写脚本,使用 Python 等脚本语言和公共 Elasticsearch API 直接查询 Elasticsearch。

有关常见问题的建议,请参阅 故障排除

Kibana CSV 导出功能通过使用多个请求对所有文档进行分页,从 Elasticsearch 收集所有数据。在内部,该功能使用 Point in time API 和查询中的 search_after 参数来实现这一点。Point in time API 存在一些限制

  1. 仅读取数据别名的权限将不起作用:需要在基础索引或数据流上具备相应的权限。
  2. 如果数据分片不可用或超时,导出将为空,而不是返回部分数据。

有些用户可能会受益于使用 scroll API,这是数据分页的替代方案。此 API 的行为没有 Point in time API 的限制,但它有其自身的限制

  1. 搜索最多限制为 500 个分片。
  2. 如果数据分片不可用或超时,导出可能会返回部分数据。

如果您希望 CSV 导出的内部实现使用 scroll API,可以在 kibana.yml 中进行配置

xpack.reporting.csv.scroll.strategy: scroll
		

有关 CSV 导出设置的更多详细信息,请访问 CSV 设置

“Socket hangup”(Socket 连接挂起)是一种通用类型的错误,意味着远程服务(在本例中为 Elasticsearch 或 Cloud 中的代理)关闭了连接。Kibana 无法预见何时会发生这种情况,也无法强制远程服务保持连接打开。为了解决这种情况,请考虑减小每个请求返回的结果大小,或增加远程服务允许保持请求打开的时间。例如

xpack.reporting.csv.scroll.size: 50
xpack.reporting.csv.scroll.duration: 2m
		

此类更改不能保证解决问题,但能让该功能在这些用例中有更好的表现。遗憾的是,减小 scroll 大小需要导出期间向 Elasticsearch 发送更多请求,这会增加更多时间开销,从而可能无意中导致更多身份验证令牌过期的错误实例。

Stack Management > Reporting 中的报告列表允许您检查用于 CSV 导出的查询。查看来自 Elasticsearch 的原始响应,或者确定通过更改查询数据的方式是否能带来性能提升,这很有帮助。

  1. 转到 Stack Management > Reporting,然后点击报告旁边的信息图标。
  2. 在报告浮窗的底部,点击 Actions
  3. Actions 菜单中,点击 Inspect query in Console
  4. 这将打开 Console 应用程序,并预填用于生成 CSV 导出的查询。
Inspect the query used for CSV export

CSV 导出中发现的一种相对常见的错误是:security_exception Root causes: security_exception: token expired

此错误发生在启用了基于令牌的身份验证(SAML 令牌)的部署中,当生成 CSV 报告的时间过长,导致报告作业详情中缓存的身份验证信息过期时。

这意味着部署本身是稳定的,但请求的报告大小太大,无法在报告任务可用的身份验证令牌允许的时间内完成。

您可以针对此错误使用以下变通方法

  • 创建较小的报告。不要创建一个涵盖大时间范围的报告,而是创建涵盖分段时间范围的多个报告。
  • 增加 xpack.security.authc.token.timeout,默认设置为 20m
  • 为完全避免令牌过期,请使用不会过期的身份验证类型(例如 Basic auth),或者使用直接查询 Elasticsearch 的脚本来运行导出。
© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.